2020-04-22 wb_timer

2020-04-23  本文已影响0人  鼎城宝箭

                            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快速闪烁

上一篇 下一篇

猜你喜欢

热点阅读