wb_timer
1) 在wb_ledblink设置基础上
Categories->timers
TIM1->Clock Source->Internal Clock
下面的Parameter Settings
因为系统总线SYSCLK的时钟是72MHz, 所以timer最小分度是1/72 μs
16 位的prescaler 72 ->1 μs, 72000->1 ms
因为16位最大为65535,所以prescaler取7200->0.1ms
counter period(autoload 16 bit register) 1000-> 100ms 每100毫秒重装一次
2) 定时器中断设置
在NVIC Settings中,勾选TIM1 update interrupt
(对于timer2,选择只有一个,TIM2 globe interrupt)
3) Pinout View
PB12->GPIO_Output
4) SAVE,generate Code
5) main.c
在main中timer初始化以后,以中断方式启动TIMER1 HAL_TIM_Base_Start_IT(&htim1);
在main以外调用HAL_TIM_PeriodElapsedCallback函数,它的位置在project Explorer->Drivers->Stm32F1xx_HAL_Driver->Stm32F1xx_hal_tim.c
int main()
{
HAL_TIM_Base_Start_IT(&htim1);
while (1)
{
}
}
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
if( htim->Instance == TIM1)
{
HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_12);
}
}
6)编译运行
编译运行,此时板载LED快速闪烁
网友评论