本节主要讲解的是stm32的定时器,阅读本文前最好 看一下我之前的文章,对于stm32的定时器可以分为一下几种:
系统滴答定时器Sys Tick
对于这个系统滴答定时器是M3内核的定时器,主要是给RTOS操作系统提供时钟节拍的,例如我们之前做延迟所用到的HAL库里的HAL_Delay()的延迟函数就是基于系统滴答定时器
看门狗Watchdog
看门狗是在很多单片机都有的时钟,可以防止程序跑飞
实时时钟RTC
实时时钟是用来做日历时钟的,在51单片机中也有存在
基本定时器(TIM6、TIM7)、通用定时器(TIM2、TIM3、TIM4、TIM5)、高级定时器(TIM1、TIM8)
这些stm32中比较常用的定时器,基本定时器也就是实现最为基本的功能,通用定时器可以实现更高级的功能,比如PWM波的生成等等,后面有机会的话会出相关的博客接下来是高级定时器,这些一般用在比较特殊的领域,本文不做涉及
具体可以看下官方的中文手册
在学习stm32时呢,通用定时器是最具代表性的,本文以通用定时器来做一个闪烁小灯的实例来描述定时器
通用定时器是通过预分频器(Prescaler)驱动主计数器(Counter Period)对内部时钟或者触发外部时钟来计数,由于预分频器(Prescaler)是16位,所以我们要向该预分频器系数输入0~65535之间任意的数值,定时器发生中断的时间的计算方法:定时器发生中断的时间=(Prescaler+1)×(Counter Period+1)×1/定时器时钟频率,在之前章节的学习我们一般都是将我们的定时器频率配置成32MHz,所以呢我们一般都是将Prescaler设置为31999,将Counter Period设置为自己想要发生中断的时间,比如想要设置500ms后发生中断,那就把Counter Period设置为499,以此类推。
那么我们下面在stm32cubemx中将其配置一下,首先还是和刚开始的一样,对芯片进行选型,(此处不再放图),配置好时钟,将调试模式转换为SW模式,在创建文件处将,c和.h文件勾选上