www.openedv.com
您好,欢迎您!    会员注册 | 登入 
公告:欢迎访问www.openedv.com开源电子网,开源共享共同进步,祝您新年快乐,万事如意!
设为首页 | 加入收藏
论坛首页 » DIY项目建议区 前往: 
stm32定时器一些心得和疑问
发表人 内容
[Down] [Up]
[楼主位] 天马

等级:NO
注册时间:
2011/07/12 18:21
文章: 64
来自: 山东
离线

 

stm32定时器一些心得

QQ截图20111117161807.png QQ截图20111117163604.png QQ截图20111117163632.png
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为高电平,所以输出应该高电平,这样解释对不对?


[加为好友] 回复 引用回复
[Down] [Up]
[1楼] 正点原子


等级:NO
注册时间:
2010/12/02 10:41
文章: 8089
来自: 湖南
在线

回复【楼主位】 天马 :
---------------------------------
库函数的,你软件仿真看寄存器值.再拿寄存器值来和参考手册的寄存器值对照下看看.



我的淘宝小店:http://shop62103354.taobao.com
[加为好友] 回复 引用回复
 
前往: 

Powered by ALIENTEK工作室 © 粤ICP备12000418号-1