本帖最后由 shiyu 于 2018-8-20 15:08 编辑
在STM32中定时器无意是一个非常重要的环节,定时器可以实现很多功能,从用户参考手册也可以看出来,定时器不仅仅是定时,计数的功能,还有其它比如输入捕获,输出比较,生成PWM,单脉冲输出等等,今天来实现一个基础定时器实现定时500ms然后触发定时器溢出中断,在定时器中断里面翻转LED灯:):)。
1、基础定时器的时钟框图,红色框起来的要重点理解。这里其实就是理解三个寄存器:Counter Register (TIMx_CNT),Prescaler Register (TIMx_PSC),Auto-Reload Register (TIMx_ARR)
2、定时钟器的时钟来源是内部时钟,这个时候就要看上篇写的系统时钟图了,如下图所示
3、
定时器的初始化设置,这里我选用的是定时器7,即TIM7,实现对上面三个参数和向上计数模式的设置,如下:
4、定时器中断使能,并设置中断优先级和中断处理函数,这里面的函数名都是HAL库固定好的,不能更改,要不然就进不了中断处理,如下:
5、最终效果实现,当定时器计满500ms后,产生溢出并发生更新事件,此时进入定时器中断函数里面,对LED(蓝色)灯进行翻转处理,这样就会看到LED灯进行500ms闪烁变换。
OK,基础定时器的使用和定时器中断就写到这里,后续继续:):)。。。
本帖最后由 shiyu 于 2018-8-20 15:08 编辑
在STM32中定时器无意是一个非常重要的环节,定时器可以实现很多功能,从用户参考手册也可以看出来,定时器不仅仅是定时,计数的功能,还有其它比如输入捕获,输出比较,生成PWM,单脉冲输出等等,今天来实现一个基础定时器实现定时500ms然后触发定时器溢出中断,在定时器中断里面翻转LED灯:):)。
1、基础定时器的时钟框图,红色框起来的要重点理解。这里其实就是理解三个寄存器:Counter Register (TIMx_CNT),Prescaler Register (TIMx_PSC),Auto-Reload Register (TIMx_ARR)
2、定时钟器的时钟来源是内部时钟,这个时候就要看上篇写的系统时钟图了,如下图所示
3、
定时器的初始化设置,这里我选用的是定时器7,即TIM7,实现对上面三个参数和向上计数模式的设置,如下:
4、定时器中断使能,并设置中断优先级和中断处理函数,这里面的函数名都是HAL库固定好的,不能更改,要不然就进不了中断处理,如下:
5、最终效果实现,当定时器计满500ms后,产生溢出并发生更新事件,此时进入定时器中断函数里面,对LED(蓝色)灯进行翻转处理,这样就会看到LED灯进行500ms闪烁变换。
OK,基础定时器的使用和定时器中断就写到这里,后续继续:):)。。。