[STM32F1] TIM定时器 影子寄存器问题

[复制链接]
2055|7
 楼主| fanxsd 发表于 2014-8-30 21:50 | 显示全部楼层 |阅读模式
1.TIM_OC1PreloadConfig(TIM1,TIM_OCPreload_Disable);  失能CCR1的影子寄存器
  TIM1->CCR1=Setdate ;  是不是设置了占空比立即有效啊!
2.TIM_OC1PreloadConfig(TIM1,TIM_OCPreload_Enable);    如果使能了CCR1的影子寄存器
  TIM1->CCR1=Setdate ;  设置完之后产生更新事件之后才有效,是完成一个周期就更新吧! 我现在板子上实    验的结果是关闭通道1,再打开通道1。占空比才有效。本人十分的郁闷。
恳求各位大神解答一下。
 楼主| fanxsd 发表于 2014-8-30 22:16 | 显示全部楼层
大神们看了留个帖子啊!还有什么才叫更新事件啊 解答一下啊!这个定义好混乱啊!CNT>ARR是不是啊
 楼主| fanxsd 发表于 2014-8-30 22:36 | 显示全部楼层
不要沉底啊!坐等回复!
mmuuss586 发表于 2014-8-30 22:56 | 显示全部楼层
https://bbs.21ic.com/icview-709244-1-1.html
可以看看,ST官方的中文资料,有讲到定时器方面;
mmuuss586 发表于 2014-8-30 23:02 | 显示全部楼层
TIM1->CCR1=Setdate ;
更新通道1 PWM占空比;
huzi2099 发表于 2014-8-31 00:35 | 显示全部楼层
怀疑你CR1的UDIS置1禁止更新了.
 楼主| fanxsd 发表于 2014-8-31 13:50 | 显示全部楼层
huzi2099 发表于 2014-8-31 00:35
怀疑你CR1的UDIS置1禁止更新了.

有关于CR1 寄存器的操作只有   
   TIM_TimeBaseStructure.TIM_Prescaler = 2;                                           //TIM基本初始化          36MHZ
   TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_CenterAligned2;//中央对齐计数模式
   TIM_TimeBaseStructure.TIM_Period = 2999;                                           //PWM周期  
   TIM_TimeBaseStructure.TIM_ClockDivision = 0;
   TIM_TimeBaseStructure.TIM_RepetitionCounter = 0;

   TIM_TimeBaseInit(TIM1,&TIM_TimeBaseStructure);



   TIM_Cmd(TIM1,ENABLE);
这里边都没有UDIS的操作,系统默认应该是0吧。
TIM1->CCER=0;  然后再打开通道1,PWM的占空比就有效了。
 楼主| fanxsd 发表于 2014-8-31 14:48 | 显示全部楼层
huzi2099 发表于 2014-8-31 00:35
怀疑你CR1的UDIS置1禁止更新了.

谢谢你,问题我自己已经解决了,因为我使用了注入中断问题。程序BUG造成的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

13

主题

559

帖子

3

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