一、简介
STM32F1 的通用定时器是一个通过可编程预分频器(PSC)驱动的 16 位自动装载计数器
(CNT)构成。 STM32 的通用定时器可以被用于:测量输入信号的脉冲长度(输入捕获)或者产
生输出波形(输出比较和 PWM)等。 使用定时器预分频器和 RCC 时钟控制器预分频器,脉冲长
度和波形周期可以在几个微秒到几个毫秒间调整。 STM32 的每个通用定时器都是完全独立的,
没有互相共享的任何资源。
定时器的计数方式
1.1定时器计数的公式
二、实验
2.1 基本函数
typedef struct {
uint32_t Prescaler; // 预分频器
uint32_t CounterMode; // 计数模式
uint32_t Period; // 定时器周期
uint32_t ClockDivision; // 时钟分频
uint32_t RepetitionCounter; // 重复计算器
} TIM_TimeBaseInitTypeDef;
2.2 Cubmax配置
重写Timer回调函数
__weak void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
/* Prevent unused argument(s) compilation warning */
UNUSED(htim);
/* NOTE : This function should not be modified, when the callback is needed,
the HAL_TIM_PeriodElapsedCallback could be implemented in the user file
*/
}
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
int cnt = 0;
if(htim->Instance == TIM2) {
// cnt++;
// if(cnt == 100) {
HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_5);
// }
}
}
在main函数激活timer
HAL_TIM_Base_Start_IT(&htim2);