STM32 入门篇之通用定时器彻底研究 STM32 的定时器功能很强大,学习起来也很费劲儿,本人在这卡了 5 天才算看明白。写下下面的文字送给后来者,希望能带给你点启发。在此声明,本人也是刚入门,接触 STM32 不足 10 天,所以有失误的地方请以手册为准,欢迎大家拍砖。 其实手册讲的还是挺全面的,只是无奈 TIMER 的功能太复杂,所以显得手册很难懂,我就是通过这样看手册:while(!SUCCESS){ 看手册…}才搞明白的!所以接下来我以手册的顺序为主线,增加一些自己的理解,并通过 11 个例程对 TIMER做个剖析。实验环境是 STM103V100 的实验板,MDK3.2 +Library2.东西都不怎么新,凑合用…… TIMER 主要是由三部分组成: 1、 时基单元。 2、 输入捕获。 3、 输出比较。 还有两种模式控制功能:从模式控制和主模式控制。 一、 框图 让我们看下手册,一开始是定时器的框图,这里面几乎包含了所有定时器的信息,您要是能看明白,那么接下来就不用再看别的了 … 为了方便的看图,我对里面出现的名词和符号做个注解: TIMx_ETR:TIMER 外部触发引脚 ETR:外部触发输入 ETRP:分频后的外部触发输入 ETRF:滤波后的外部触发输入 ITRx:内部触发 x(由另外的定时器触发) TI1F_ED:TI1 的边沿检测器。 TI1FP1/2:滤波后定时器 1/2 的输入 TRGI:触发输入 TRGO:触发输出 CK_PSC:应该叫分频器时钟输入 CK_CNT:定时器时钟。(定时周期的计算就靠它) TIMx_CHx:TIMER 的输入脚 TIx:应该叫做定时器输入信号 x ICx:输入比较 x ICxPS:分频后的 ICx OCx:输出捕获 x OCxREF:输出参考信号 关于框图还有以下几点要注意: 1、 影子寄存器。 有阴影的寄存器,表示在物理上这个寄存器对应 2 个寄存器,一个是程序员可以写入或读出的寄存器,称为 preload register(预装载寄存器),另一个是程序员看不见的、但在操作中真正起作用的寄存器,称为 shadow register(影子寄存器);输入滤波机制 在 ETR 何 TIx 输入端有个输入滤波器,它的作用是以采样频率Fdts 来采样 N 次进行滤波的。 2、 输入引脚和输出引脚是相同的。 二、时基单元 时基单元有三个部分:CNT、PSC、ARR。CNT 的计数方式分三种:向上、 向下、中央对齐。通俗的说就是 0—ARR、ARR—0、0—(ARR-1)—ARR—1. 三、时钟源的选择 这个是难点之一。从手册上我们看到共有三种时钟源: 1、 内部时钟。 也就是选择 CK_INT 做时钟,这个简...