打印

stm32定时器一些心得和疑问

[复制链接]
7180|19
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 chenzongxi 于 2011-11-17 18:06 编辑


stm32的普通定时器输出比较设置有些难理解,找了不少资料后,总结了以下观点(不一定对),还请纠错


TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_Inactive;
//
低电平

TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;


TIM_OCInitStructure.TIM_Pulse = 20000;


TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;//
高电平有效,CC1P=0,没有反相

所以输出电平为低电平。

主要是TIM_OCMode_Inactive和TIM_OCPolarity_High的关系要对应好。图中显示了它们关系。

TIM_OCMode_Inactive:输出比较非主动模式 (匹配时设置输出引脚为无效电平,当计数值为比较/捕获寄存器值相同时,强制输出为低电平)

TIM_OCPolarity_High: 高电平有效,对应CC1P为0,即原值输出(没反相),所以总的输出为低电平。

我在实验班上实验,对应TIM_OCPolarity_High时,Timing,Inactive模式,都输出为低电平,toggle输出高电平,应该是对的,可Active模式对应TIM_OCPolarity_High时,输出为低电平,这就不对了,TIM_OCMode_Active为高电平,所以输出应该高电平,这样解释对不对?
沙发
香水城| | 2011-11-17 18:00 | 只看该作者
请看这个表:

TIM_OCPolarity_HighTIM_OCPolarity_Low
TIM_OCMode_Inactive比较成功前
比较成功后
TIM_OCMode_Active比较成功前
比较成功后

使用特权

评论回复
板凳
chenzongxi|  楼主 | 2011-11-17 18:15 | 只看该作者
2# 香水城


这个表文档中有?

使用特权

评论回复
地板
chenzongxi|  楼主 | 2011-11-17 18:28 | 只看该作者
2# 香水城


比较成功前,一直是高电平,只有比较成功后才输出一个低电平,然后又一直高电平,是这样?

使用特权

评论回复
5
香水城| | 2011-11-17 20:24 | 只看该作者
比较成功后 包含计数器归零之前的所有时间。

这个表手册中没有,但可以很容易地推动出来。

使用特权

评论回复
6
chenzongxi|  楼主 | 2011-11-18 08:09 | 只看该作者
5# 香水城

谢谢啊,群主辛苦了

使用特权

评论回复
7
chenzongxi|  楼主 | 2011-11-18 14:10 | 只看该作者
5# 香水城


还有点问题,按照您的意思,比较成功前为高电平,成功后为低电平
计数器到达最大值后又从零开始计数,那电平开始又为低,比较成功后为高,这样就是高低电平输出,这和PWM不就一样了

使用特权

评论回复
8
香水城| | 2011-11-18 15:44 | 只看该作者
本帖最后由 香水城 于 2011-11-21 16:43 编辑
5# 香水城  


还有点问题,按照您的意思,比较成功前为高电平,成功后为低电平
计数器到达最大值后又从零开始计数,那电平开始又为低,比较成功后为高,这样就是高低电平输出,这和PWM不就一样了 ...
chenzongxi 发表于 2011-11-18 14:10


没错,就是这么回事!

不好意思,我搞错了。请看17楼的更正。

使用特权

评论回复
9
baidudz| | 2011-11-18 19:16 | 只看该作者
楼主的领悟能力挺强的:lol

使用特权

评论回复
10
grissiom| | 2011-11-18 21:32 | 只看该作者
5# 香水城  


还有点问题,按照您的意思,比较成功前为高电平,成功后为低电平
计数器到达最大值后又从零开始计数,那电平开始又为低,比较成功后为高,这样就是高低电平输出,这和PWM不就一样了 ...
chenzongxi 发表于 2011-11-18 14:10


只有在 toggle 模式下才是这样吧……

使用特权

评论回复
11
chenzongxi|  楼主 | 2011-11-20 08:21 | 只看该作者
8# 香水城



在实验板上一直输出低电平

使用特权

评论回复
12
chenzongxi|  楼主 | 2011-11-20 08:22 | 只看该作者
11# chenzongxi

使用特权

评论回复
13
chenzongxi|  楼主 | 2011-11-20 08:22 | 只看该作者
11# chenzongxi

使用特权

评论回复
14
chenzongxi|  楼主 | 2011-11-20 08:23 | 只看该作者
8# 香水城

使用特权

评论回复
15
chenzongxi|  楼主 | 2011-11-20 08:23 | 只看该作者
14# chenzongxi


和您所得不太一样啊

使用特权

评论回复
16
xinhuam| | 2011-11-21 16:11 | 只看该作者
这个回答似有问题,TIM_OCMode_Inactive 和 TIM_OCMode_Active 属于强制类型吗,与比较无关的吧

使用特权

评论回复
17
香水城| | 2011-11-21 16:42 | 只看该作者
不好意思,我8楼的回答是错的,谢谢10楼提醒,尽管10楼的答案也不正确。

正确的答案是:比较成功后,是没有条件的,即比较成功时设置的高电平或低电平,之后就不再改变,除非有其他的设置。

“比较成功后 包含计数器归零之前的所有时间。”这个表述只适合于PWM1模式或PWM2模式。

Toggle模式是在每次比较成功时,翻转输出电平,而不管原来是什么电平,直到下次比较成功都不再变化。

使用特权

评论回复
18
pkat| | 2011-11-21 18:15 | 只看该作者
我以前的理解貌似也有错误

使用特权

评论回复
19
wuguoyan| | 2011-11-23 09:37 | 只看该作者
2# 香水城

学习了~~~

使用特权

评论回复
20
wenzj12345| | 2011-12-23 17:02 | 只看该作者
我的这一站 定时器  开始了··

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

43

帖子

1

粉丝