TIM定时中断和PWM驱动呼吸灯
注:本人使用的是标准库
一、使用TIM2实现5s定时向串口输出“hello world!”,以及2s演示LED灯
1、中断原理
首先选择时钟,可以选择内部时钟和外部时钟,内部时钟由内部RCC提供,外部需外接硬件设备通过引脚触发计时;
主要定时模块是时基单元,预分频器(PSC)与自动重装器(ARR)主要作用是确定实际计时时长,如当选择内部时钟时,内部时钟频率是72MHz,若设置7200的分频则会得到10k的计数频率,在10k的计数频率下若设置10000
的自动重装,则相当于在10k的频率下(即周期为1/10000)计10000个数就等价于计时1s。而计数器(CNT)的作用时确定计数上限,到达计数器值时产生更新中断,进入中断输出控制,再通过NVIC进行中断优先级选择,最后再到cpu进行处理。
(注:图片取自bilibili up主:江科大自化协)
2、代码实现
根据原理图将各个部分配置好即可
1)时钟配置
首先得开始TIM2的时钟,以开启TIM2
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);//注意TIM2在APB1总线下
其次选择时钟源,仅需实现定时功能,这里选择内部时钟即可
TIM_InternalClockConfig(TIM2);//开启TIM2的内部时钟,若不写此语句也可,因为定时器上电后默认使用内部时钟
2)配置时基单元,即初始化TIM2
TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;//定义时基单元结构体来配置各个参数
TIM_TimeBaseInitStructure.TIM_Cloc