一、相关API
1、HAL_TIM_Base_Init(TIM_HandleTypeDef *htim);
参数:TIM_HandleTypeDef结构体指针
功能:初始化TIM时基单元
2、HAL_TIM_Base_DeInit(TIM_HandleTypeDef *htim);
参数:TIM_HandleTypeDef结构体指针
功能:TIM时基单元赋初值
3、HAL_TIM_Base_MspInit(TIM_HandleTypeDef *htim);
参数:TIM_HandleTypeDef结构体指针
功能:回调函数
4、HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef *htim);
参数:TIM_HandleTypeDef结构体指针
功能:回调函数
5、HAL_TIM_Base_Start(TIM_HandleTypeDef *htim);
参数:TIM_HandleTypeDef结构体指针
功能:启动定时器
6、HAL_TIM_Base_Stop(TIM_HandleTypeDef *htim);
参数:TIM_HandleTypeDef结构体指针
功能:停止定时器
7、HAL_TIM_Base_Start_IT(TIM_HandleTypeDef *htim);
参数:TIM_HandleTypeDef结构体指针
功能:启动定时器中断
8、HAL_TIM_Base_Stop_IT(TIM_HandleTypeDef *htim);
参数:TIM_HandleTypeDef结构体指针
功能:停止定时器中断
9、HAL_TIM_Base_Start_DMA(TIM_HandleTypeDef *htim, const uint32_t *pData, uint16_t Length);
参数:TIM_HandleTypeDef结构体指针,缓冲区地址,数据长度
功能:启动定时器DMA
10、HAL_TIM_Base_Stop_DMA(TIM_HandleTypeDef *htim);
参数:TIM_HandleTypeDef结构体指针
功能:停止定时器DMA
二、示例
定时时间计算:1/T=CK_PSC/[(PSC+1)*(ARR+1)]
CK_PSC:时钟频率
PSC:分频系数
ARR:自动重装载值
#include "TIM.h"
#include "LED.h"
TIM_HandleTypeDef TIM1_InitStructure;
void Timer1_Init(void)
{
TIM1_InitStructure.Instance = TIM1;
TIM1_InitStructure.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
TIM1_InitStructure.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;//分频因子
TIM1_InitStructure.Init.CounterMode = TIM_COUNTERMODE_UP;//计数模式:向上计数
TIM1_InitStructure.Init.Period = 5000 - 1;//自动重装载值ARR
TIM1_InitStructure.Init.Prescaler = 16800 - 1;//分频系数PSC
TIM1_InitStructure.Init.RepetitionCounter = 0;//重复计数器
HAL_TIM_Base_Init(&TIM1_InitStructure);//初始化结构体
HAL_TIM_Base_Start_IT(&TIM1_InitStructure);
}
void HAL_TIM_Base_MspInit(TIM_HandleTypeDef *htim)
{
if(htim->Instance == TIM1)
{
__HAL_RCC_TIM1_CLK_ENABLE();//开启TIM1的时钟
HAL_NVIC_SetPriority(TIM1_UP_TIM10_IRQn,1,1);//设置中断优先级
HAL_NVIC_EnableIRQ(TIM1_UP_TIM10_IRQn);//开启中断
}
}
void TIM1_UP_TIM10_IRQHandler(void)
{
HAL_TIM_IRQHandler(&TIM1_InitStructure);
}
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
if(htim->Instance == TIM1)
{
LED1_Toggle;
}
}