[其他ST产品] STM32 TImer几种模式

[复制链接]
1309|43
 楼主| 和下土 发表于 2021-3-28 23:21 | 显示全部楼层 |阅读模式

STM32 TImer几种模式_通用定时器

 楼主| 和下土 发表于 2021-3-28 23:22 | 显示全部楼层
输入捕获模式

库函数例程位置: STM32F10x_StdPeriph_Lib_V3.3.0\Project\STM32F10x_StdPeriph_Examples\TIM\InputCapture
 楼主| 和下土 发表于 2021-3-28 23:23 | 显示全部楼层
在输入捕获模式下,当检测到ICx信号上相应的边沿后,计数器的当前值被锁存到捕获/比较寄存器(TIMx_CCRx)中。当捕获事件发生时,相应的CCxIF标志(TIMx_SR寄存器)被置’1’,如果使能了中断或者DMA操作,则将产生中断或者DMA操作。
 楼主| 和下土 发表于 2021-3-28 23:24 | 显示全部楼层
在捕获模式下,捕获发生在影子寄存器上,然后再复制到预装载寄存器中。
 楼主| 和下土 发表于 2021-3-28 23:24 | 显示全部楼层
PWM输入模式

库函数例程位置 :STM32F10x_StdPeriph_Lib_V3.3.0\Project\STM32F10x_StdPeriph_Examples\TIM\PWM_Input
 楼主| 和下土 发表于 2021-3-28 23:25 | 显示全部楼层
该模式是输入捕获模式的一个特例

例如,你需要测量输入到TI1上的PWM信号的长度(TIMx_CCR1寄存器)和占空比(TIMx_CCR2寄存器),具体步骤如下(取决于CK_INT的频率和预分频器的值)
 楼主| 和下土 发表于 2021-3-28 23:26 | 显示全部楼层
选择TIMx_CCR1的有效输入:置TIMx_CCMR1寄存器的CC1S=01(选择TI1)。
 楼主| 和下土 发表于 2021-3-28 23:27 | 显示全部楼层
● 选择TI1FP1的有效极性(用来捕获数据到TIMx_CCR1中和清除计数器):置CC1P=0(上升沿有效)。
 楼主| 和下土 发表于 2021-3-28 23:28 | 显示全部楼层
● 选择TIMx_CCR2的有效输入:置TIMx_CCMR1寄存器的CC2S=10(选择TI1)。
 楼主| 和下土 发表于 2021-3-28 23:28 | 显示全部楼层
● 选择TI1FP2的有效极性(捕获数据到TIMx_CCR2):置CC2P=1(下降沿有效)。
 楼主| 和下土 发表于 2021-3-28 23:29 | 显示全部楼层
● 选择有效的触发输入信号:置TIMx_SMCR寄存器中的TS=101(选择TI1FP1)。
 楼主| 和下土 发表于 2021-3-28 23:29 | 显示全部楼层
● 配置从模式控制器为复位模式:置TIMx_SMCR中的SMS=100。
 楼主| 和下土 发表于 2021-3-28 23:30 | 显示全部楼层
● 使能捕获:置TIMx_CCER寄存器中CC1E=1且CC2E=1。
 楼主| 和下土 发表于 2021-3-28 23:31 | 显示全部楼层
233176060a10b9a10b.png
由于只有TI1FP1和TI2FP2连到了从模式控制器,所以PWM输入模式只能使用TIMx_CH1 /TIMx_CH2信号。
 楼主| 和下土 发表于 2021-3-28 23:31 | 显示全部楼层
强置输出模式

在输出模式(TIMx_CCMRx寄存器中CCxS=00)下,输出比较信号(OCxREF和相应的OCx)能够直接由软件强置为有效或无效状态,而不依赖于输出比较寄存器和计数器间的比较结果。

例如:CCxP=0(OCx高电平有效),则OCx被强置为高电平。 置TIMx_CCMRx寄存器中的OCxM=100,可强置OCxREF信号为低。
 楼主| 和下土 发表于 2021-3-28 23:32 | 显示全部楼层
输出比较模式

此项功能是用来控制一个输出波形,或者指示一段给定的的时间已经到时。 当计数器与捕获/比较寄存器的内容相同时,输出比较功能做如下操作:
 楼主| 和下土 发表于 2021-3-28 23:33 | 显示全部楼层
● 将输出比较模式(TIMx_CCMRx寄存器中的OCxM位)和输出极性(TIMx_CCER寄存器中的CCxP位)定义的值输出到对应的引脚上。在比较匹配时,输出引脚可以保持它的电平(OCxM=000)、被设置成有效电平(OCxM=001)、被设置成无效电平(OCxM=010)或进行翻转(OCxM=011)。
 楼主| 和下土 发表于 2021-3-28 23:34 | 显示全部楼层
设置中断状态寄存器中的标志位(TIMx_SR寄存器中的CCxIF位)。
 楼主| 和下土 发表于 2021-3-28 23:35 | 显示全部楼层
● 若设置了相应的中断屏蔽(TIMx_DIER寄存器中的CCxIE位),则产生一个中断。
 楼主| 和下土 发表于 2021-3-28 23:35 | 显示全部楼层
● 若设置了相应的使能位(TIMx_DIER寄存器中的CCxDE位,TIMx_CR2寄存器中的CCDS位选择DMA请求功能),则产生一个DMA请求。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

114

主题

1405

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部