之前学习STM32标准库并没有注意到SlaveMode这个选项,这一次使用Cube中发现了必须要去选择 这一个选项。
一、Cube中需要选择选项
总共有5中,Disable、外部时钟模式1,复位模式,门级驱动模式,触发模式
从手册中寻找以上解释见二
二、TIME
如表示为定时器框图,总共分为四个部分,第一个部分提供时钟源,第二个部分是输入部分,第三个部分是比较寄存器和计数器以及自动重装载寄存器,第四个部分是输出部分。
1.时钟源选择如下
如图是时钟源的选择,可以有内部、外部输入引脚1和2、内部触发输入(多个定时器级联)。这个主要选择计数器的计数时钟来源,一般选择内部时钟就够了,需要多个定时器一起作用时候可以选择其他模式,Cube中External Clock Mode1 就是对应这一条。
2.比较捕获(具体参考手册)
3.输出比较模式(具体参考手册)
4.复位,触发,门驱动(都是针对输入的从模式下)
TIMx定时器能够在多种模式下和一个外部的触发同步:复位模式、门控模式和触发模式。
(1)从模式——复位模式:在发生一个触发输入事件时,计数器和它的预分频器能够重新被初始化;同时,如果TIMx_CR1寄存器的URS位为低,还会产生一个更新事件UEV;然后所有的预装载寄存器(TIMx_ARR, TIMx_CCRx)都会被更新。
计数器开始依据内部时钟计数,然后正常运转直到TI1出现一个上升沿;此时,计数器被清零然后从0重新开始计数。同时,触发标志(TIMx_SR寄存器中的TIF位)被设置,根据TIMx_DIER寄存器中TIE(中断使能)位和TDE(DMA使能)位的设置,产生一个中断请求或一个DMA请求。
下图显示当自动重装载寄存器TIMx_ARR=0x36时的动作。在TI1上升沿和计数器的实际复位之间的延时,取决于TI1输入端的重同步电路。
(2)从模式——门控模式
按照选中的输入端电平使能计数器。 在如下的例子中,计数器只在TI1为低时向上计数:
● 配置通道1以检测TI1上的低电平。配置输入滤波器带宽(本例中,不需要滤波,所以保持IC1F=0000)。触发操作中不使用捕获预分频器,所以不需要配置。CC1S位用于选择输入捕获源,置TIMx_CCMR1寄存器中CC1S=01。置TIMx_CCER寄存器中CC1P=1以确定极性(只检测低电平)。
● 置TIMx_SMCR寄存器中SMS=101,配置定时器为门控模式;置TIMx_SMCR寄存器中TS=101,选择TI1作为输入源。
● 置TIMx_CR1寄存器中CEN=1,启动计数器。在门控模式下,如果CEN=0,则计数器不能启动,不论触发输入电平如何。 只要TI1为低,计数器开始依据内部时钟计数,在TI1变高时停止计数。当计数器开始或停止时都设置TIMx_SR中的TIF标置。 TI1上升沿和计数器实际停止之间的延时,取决于TI1输入端的重同步电路。
(3)从模式——触发模式
输入端上选中的事件使能计数器。 在下面的例子中,计数器在TI2输入的上升沿开始向上计数:
● 配置通道2检测TI2的上升沿。配置输入滤波器带宽(本例中,不需要任何滤波器,保持IC2F=0000)。触发操作中不使用捕获预分频器,不需要配置。CC2S位只用于选择输入捕获源,置TIMx_CCMR1寄存器中CC2S=01。置TIMx_CCER寄存器中CC2P=1以确定极性(只检测低电平)。
● 置TIMx_SMCR寄存器中SMS=110,配置定时器为触发模式;置TIMx_SMCR寄存器中TS=110,选择TI2作为输入源。 当TI2出现一个上升沿时,计数器开始在内部时钟驱动下计数,同时设置TIF标志。
TI2上升沿和计数器启动计数之间的延时,取决于TI2输入端的重同步电路。
之前学习STM32标准库并没有注意到SlaveMode这个选项,这一次使用Cube中发现了必须要去选择 这一个选项。
一、Cube中需要选择选项
总共有5中,Disable、外部时钟模式1,复位模式,门级驱动模式,触发模式
从手册中寻找以上解释见二
二、TIME
如表示为定时器框图,总共分为四个部分,第一个部分提供时钟源,第二个部分是输入部分,第三个部分是比较寄存器和计数器以及自动重装载寄存器,第四个部分是输出部分。
1.时钟源选择如下
如图是时钟源的选择,可以有内部、外部输入引脚1和2、内部触发输入(多个定时器级联)。这个主要选择计数器的计数时钟来源,一般选择内部时钟就够了,需要多个定时器一起作用时候可以选择其他模式,Cube中External Clock Mode1 就是对应这一条。
2.比较捕获(具体参考手册)
3.输出比较模式(具体参考手册)
4.复位,触发,门驱动(都是针对输入的从模式下)
TIMx定时器能够在多种模式下和一个外部的触发同步:复位模式、门控模式和触发模式。
(1)从模式——复位模式:在发生一个触发输入事件时,计数器和它的预分频器能够重新被初始化;同时,如果TIMx_CR1寄存器的URS位为低,还会产生一个更新事件UEV;然后所有的预装载寄存器(TIMx_ARR, TIMx_CCRx)都会被更新。
计数器开始依据内部时钟计数,然后正常运转直到TI1出现一个上升沿;此时,计数器被清零然后从0重新开始计数。同时,触发标志(TIMx_SR寄存器中的TIF位)被设置,根据TIMx_DIER寄存器中TIE(中断使能)位和TDE(DMA使能)位的设置,产生一个中断请求或一个DMA请求。
下图显示当自动重装载寄存器TIMx_ARR=0x36时的动作。在TI1上升沿和计数器的实际复位之间的延时,取决于TI1输入端的重同步电路。
(2)从模式——门控模式
按照选中的输入端电平使能计数器。 在如下的例子中,计数器只在TI1为低时向上计数:
● 配置通道1以检测TI1上的低电平。配置输入滤波器带宽(本例中,不需要滤波,所以保持IC1F=0000)。触发操作中不使用捕获预分频器,所以不需要配置。CC1S位用于选择输入捕获源,置TIMx_CCMR1寄存器中CC1S=01。置TIMx_CCER寄存器中CC1P=1以确定极性(只检测低电平)。
● 置TIMx_SMCR寄存器中SMS=101,配置定时器为门控模式;置TIMx_SMCR寄存器中TS=101,选择TI1作为输入源。
● 置TIMx_CR1寄存器中CEN=1,启动计数器。在门控模式下,如果CEN=0,则计数器不能启动,不论触发输入电平如何。 只要TI1为低,计数器开始依据内部时钟计数,在TI1变高时停止计数。当计数器开始或停止时都设置TIMx_SR中的TIF标置。 TI1上升沿和计数器实际停止之间的延时,取决于TI1输入端的重同步电路。
(3)从模式——触发模式
输入端上选中的事件使能计数器。 在下面的例子中,计数器在TI2输入的上升沿开始向上计数:
● 配置通道2检测TI2的上升沿。配置输入滤波器带宽(本例中,不需要任何滤波器,保持IC2F=0000)。触发操作中不使用捕获预分频器,不需要配置。CC2S位只用于选择输入捕获源,置TIMx_CCMR1寄存器中CC2S=01。置TIMx_CCER寄存器中CC2P=1以确定极性(只检测低电平)。
● 置TIMx_SMCR寄存器中SMS=110,配置定时器为触发模式;置TIMx_SMCR寄存器中TS=110,选择TI2作为输入源。 当TI2出现一个上升沿时,计数器开始在内部时钟驱动下计数,同时设置TIF标志。
TI2上升沿和计数器启动计数之间的延时,取决于TI2输入端的重同步电路。
举报