STM32芯片输出模式问题

[复制链接]
4650|6
 楼主| zh5202 发表于 2012-7-11 18:26 | 显示全部楼层 |阅读模式
在STM32设计中,将输出设置成了三种模式:强制输出模式;输出比较模式以及PWM模式。强制输出模式可通过TIM_ForcedOCxConfig()函数实现;PWM模式有PWM1和PWM2两种模式;而输出比较模式则有:
输出比较时间模式:Timing
输出比较主动模式:Active
输出比较非主动模式:Inactive
输出比较触发模式:Toggle
为什么要分为四种模式,这里就搞不懂了,请问香主,这里的四个模式到底有什么样的区别呢?最好是说明这么设计的初衷是什么?
figo20042005 发表于 2012-7-11 20:01 | 显示全部楼层
就是当计数器CNT计数到CCRx寄存器的值的时候:

timing:管脚无变化

toggle:管脚状态翻转,高变低,低变高

active:管脚状态强制变成有效电平

inactive:管脚状态强制变成无效电平

至于有效电平是高还是低,要看CCER寄存器的CCxP位设置。
figo20042005 发表于 2012-7-11 20:05 | 显示全部楼层
详细讨论可以看下,以前的这个帖子 https://bbs.21ic.com/icview-186479-1-1.html
 楼主| zh5202 发表于 2012-7-13 10:14 | 显示全部楼层
2# figo20042005
看了看手册,对应程序,理解了下面三个:
toggle:管脚状态翻转,在CCRx与CNT匹配时,翻转输出;CNT溢出后输出变回原来的状态(与PWM输出相似);
active:CCRx与CNT匹配之前,输出无效状态;匹配时变成有效状态;CNT溢出后又变成无效状态(与Toggle和PWM输出还是类似)
inactive:与Active相反,CCRx与CNT匹配之前,输出有效状态;匹配之后输出无效状态;CNT溢出时输出无效状态。(与Toggle和PWM输出还是类似)
Active和Inactive输出的是有效状态是高还是低,要看CCER寄存器的CCxP位设置。
依照上面看,Toggle、Active和Inactive三个模式其输出波形都和PWM类似(是输出波形啊),而且其占空比都可以通过CCRx来控制。
如果上面的分析正确,那为什么要设置这么多个模式呢,一个PWM1和PWM2不就能实现以上功能了么?

另外针对Timing模式,手册上说的是管脚输出无变化,那和调用IM_ForcedOCxConfig()函数强制输出有什么区别?更重要的是,我最近配置Timing模式输出,其管脚输出状态在改变,这又是怎么回事?
onlyrcy 发表于 2012-7-13 12:49 | 显示全部楼层
学习了
 楼主| zh5202 发表于 2012-7-16 16:30 | 显示全部楼层
怎么没人来帮我解答问题啊?
1120112724 发表于 2015-3-18 14:48 | 显示全部楼层
zh5202 发表于 2012-7-13 10:14
2# figo20042005  
看了看手册,对应程序,理解了下面三个:
toggle:管脚状态翻转,在CCRx与CNT匹配时, ...

楼主,toggle模式时钟溢出的时候会恢复原来状态吗
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

248

帖子

2

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