修改TIM1->CR2 寄存器的值问题

[复制链接]
9830|10
 楼主| libinxtdj 发表于 2011-10-28 20:10 | 显示全部楼层 |阅读模式
TIM1_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;

TIM1_OCInitStructure.TIM_OutputNState =TIM_OutputNState_Enable;  

TIM1_OCInitStructure.TIM_Pulse = PWM_PERIOD >> 1;     

TIM1_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
//上桥臂高电平有效
TIM1_OCInitStructure.TIM_OCNPolarity = TIM_OCNPolarity_Low;
//下桥臂低电平有效
TIM1_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Reset;
//空闲状态上桥输出0
TIM1_OCInitStructure.TIM_OCNIdleState =TIM_OCNIdleState_Set;
//空闲状态下桥输出1
通过修改CR2的值来实现  上桥输出0,下桥输出0(下桥低有效)电子刹车。但是现在的问题是为什么下桥的状态修改不了呢?始终都是1,没办法改为0
TIM1的LOCK位已经关掉了。
airwill 发表于 2011-10-29 08:44 | 显示全部楼层
不知道 LZ 在电子刹车时是怎么控制寄存器的?
请注意 "电子刹车" 和数据手册说的 "刹车" 功能完全不是一回事!
 楼主| libinxtdj 发表于 2011-10-29 09:15 | 显示全部楼层
数据手册中得刹车是一种保护功能。
通过把CR2寄存器的值修改为CR2|=0x00000020,就是打开下桥臂,关闭上桥臂,但是CR2寄存器这个值始终都是0x00002A20,没法修改成0x00000020.不解?
airwill 发表于 2011-10-29 13:08 | 显示全部楼层
为什么是 CR2|=0x00000020?
而不是  CR2=0x00000020
 楼主| libinxtdj 发表于 2011-10-29 20:20 | 显示全部楼层
都是一样的。。。
airwill 发表于 2011-10-30 09:13 | 显示全部楼层
CR2|=0x00000020 和 CR2=0x00000020 都是一样的?
TIM1的LOCK位已经关掉了 OISXX 的各位是改不了的。
不过你好象不需要更改这些位,把 CCRx 设置成最大值(ARR 的值),不就可以了
 楼主| libinxtdj 发表于 2011-10-31 10:43 | 显示全部楼层
TIM1的LOCK位已经关掉了 OISXX 的各位是改不了的。
LOCK位关掉了应该就可以修改了呀。为什么修改不了呢?
再者我这个程序电子刹车之前是要关掉主输出的,也就是MOE位要关闭。因此不能通过修改占空比来实现。
另外现在的程序六路输出地优先级是上桥高有效,下桥低有效。如果改为全是高有效我就可以通过修改CR2寄存器的值来使上桥全开,下桥全关或者上桥全关,下桥全开,对此颇为不解啊?希望高手来解答下,谢谢
airwill 发表于 2011-10-31 14:09 | 显示全部楼层
本帖最后由 airwill 于 2011-10-31 14:11 编辑

你是说 "TIM1的LOCK位已经关掉了?" 是 LOCK 关闭了, 如果关闭了, CR2=0x00000020 应该有效的. 能够修改的. 你又说修改不了, 那应该是 LOCK 起保护了. 请先弄清楚它
 楼主| libinxtdj 发表于 2011-10-31 14:33 | 显示全部楼层
8# airwill

LOCK位确实已经关闭了!!!
shuaibaobao 发表于 2011-11-27 22:06 | 显示全部楼层
这种保护功能,不怎么可靠。
香水城 发表于 2011-11-28 15:14 | 显示全部楼层
这种保护功能,不怎么可靠。
shuaibaobao 发表于 2011-11-27 22:06


你怎么知道不可靠?! 有什么根据?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:我的地盘听我的!

48

主题

181

帖子

0

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