广大的互联网的大家早上中午晚上、、又好、、没错了、、我又来了、、写博客不是定时的、、为什么我要提写博客不是定时的呢??聪明的人又猜到我要说什么了吧、有前途、其实我还是第一次听到定时器有通用和高级之分的、、原来定时器也有分等级的呀、、STM32果真不简单呀、、
好了、、为啥名为通用呢?、恕小弟不才、目前只理解为:因为可以通用,所以名为通用定时器、那可以通用在哪些方面呢?那通用的原理又是什么呢?咦,不急不急、、待我慢慢翻开“葵花宝典”第STM32篇之通用定时器:葵花兄,近来可好?咱们又见面了、能告诉我定时器可以通用在哪些方面吗?只见葵花兄镇定自若的说:通用定时器可以用来:
1、测量输入信号的脉冲长度,也就是输入捕获(请对此四字短语养成良好的形象哈)
2、产生输出波形,也就是输出比较或者PWM(同上)
那葵花兄,通用的原理呢?又见葵花兄坦然自若的说:通用定时器是一个通过可编程预分频器(PSC)(注:这三个字母要有印象哈)驱动的16位自动装载计数器(CNT)(注:同上)构成。
好了,大家撇开葵花兄,把焦点重新聚焦在我身上、那通用定时器有什么功能呢?我想肯定有人马上反应:有定时的功能、、额、、我也不能说你错是吧、、那我来具体点吧,其实也不是我具体,多亏了“葵花宝典”第STM32篇中文参考手册 :
1) 16 位向上 、向下 、向上/向下自动装载计数器 (TIMx_CNT)。
2) 16 位可编程( 可以实时修改 )预分频器(TIMx_PSC)(TIMx_PSC)(TIMx_PSC),计数器时钟频率的分系为 1~ 65535 之间的任意数值。
3)4个独立通道( TIMx_CH1~4 TIMx_CH1~4 TIMx_CH1~4 TIMx_CH1~4)
A.输入捕获
B.输出比较
C.PWM 生成 (边缘或中间对齐模式 )
D.单脉冲模式输出
4)可使用外部信号( TIMx_ETR )控制定时器和互连(可以用1个定时器控制另外一个定时器)的同步电路。
5)如下事件发生时产生中断/DMA:
A.更新:计数器向上溢出/向下溢出,计数器初始化 ( 通过软件或者内部 /外部触发 )
B.触发事件 (计数器启动、停止初始化或者由内部/外部触发计数 )
C.输入捕获
D.输出比较
E.支持针对定位的增量 (正交 )编码器和霍尔传感电路
F.触发输入作为外部时钟或者按周期的电流管理
当然啦,在此博客中不考虑那么多功能先哈、、先淡定、、若是被吓到了、、先去喝杯茶压压惊哈、、那我们怎么来实现定时的功能呢?
只要定时、当达到一定容量时,就会发生溢出、、聪明的人又知道我要说什么了吧?世上太多聪明的人了、、没错了、、把中断这位兄弟叫上、让溢出兄和中断兄合身、、(省略合身等待的时间)、对了、诞生了溢出中断、我们给取个好听的名字:更新中断、在这里,我们是利用中断来定时的、、
接下来,容小弟介绍下与此博客有关系的寄存器(具体的位是什么功能我就不讲了哈,因为我们是采用库而不是操作寄存器,想知道的可以参考中文参考手册哈),大家掌声响起:欢迎控制兄(TIMx_CR1)
欢迎中断/DMA使能兄(TIMx_DIER):
欢迎预分频器兄(TIMx_PSC):
欢迎自动重装载寄存器兄(TIMx_ARR):
好了、、这四位可以在旁边休息了(我们就不介绍了)、、因为我们的重点:库兄要出现了,接下来,用最热烈的掌声欢迎:
首先:有请挂载时钟大神ABP1(为什么要请这位大神呢?因为我们的通用定时器是挂载在这位ABP1的,证据如下)