[讨论] STM32定时器中断中改变定时周期的问题。

杏花雨   2016-10-24 11:13 楼主
STM32关闭ARPE位,就是ARR值可以直接改变,假设当前的ARR值比较大,ARR=5000,当进入定时器中断后,CNT计数器已经计到50(CNT=50),如果这时候给ARR寄存器赋值为30,定时器怎么运行呢,我的猜想是CNT计数器会一直加到65536,然后溢出进入中断,下次CNT比较值才变为50。有没有人研究过这个问题呢?求指教~

回复评论 (8)

就没人告诉你CNT计数器的值也是可以改变的吗?

void TIM_SetCounter(TIM_TypeDef* TIMx, uint16_t Counter)
{
  /* Check the parameters */
  assert_param(IS_TIM_ALL_PERIPH(TIMx));
  /* Set the Counter Register value */
  TIMx->CNT = Counter;
}
天地庄周马;江湖范蠡船。 个性签名还是放QQ号吧,2060347305,添加说明EEworld好友
点赞  2016-10-24 12:39
引用: ywlzh 发表于 2016-10-24 12:39
就没人告诉你CNT计数器的值也是可以改变的吗?

void TIM_SetCounter(TIM_TypeDef* TIMx, uint16_t Count ...

就是在设置了值之后,重新设置下CNT的值是么?那要如果不改呢?
点赞  2016-10-24 12:45
引用: 杏花雨 发表于 2016-10-24 12:45
就是在设置了值之后,重新设置下CNT的值是么?那要如果不改呢?

好像只有 CNT的值只能增 这个模式 有没有其他的模式我不清楚 楼主可以自行查阅资料

不改 CNT自然会变化 ARR与之相等是可以进入中断的,只不过中断向量就不是溢出 无非就这些 何必纠结
天地庄周马;江湖范蠡船。 个性签名还是放QQ号吧,2060347305,添加说明EEworld好友
点赞  2016-10-24 13:17
引用: ywlzh 发表于 2016-10-24 13:17
好像只有 CNT的值只能增 这个模式 有没有其他的模式我不清楚 楼主可以自行查阅资料

不改 CNT自然会变 ...

没看懂层主啥意思~我没有纠结这个,是用这个功能的时候出问题了,所以再找原因~
点赞  2016-10-24 14:58
搞个示波器看下就得了
点赞  2016-10-24 15:21
引用: 杏花雨 发表于 2016-10-24 14:58
没看懂层主啥意思~我没有纠结这个,是用这个功能的时候出问题了,所以再找原因~

硬性上的问题无法改变 就只有用其他的方式避免了
天地庄周马;江湖范蠡船。 个性签名还是放QQ号吧,2060347305,添加说明EEworld好友
点赞  2016-10-24 15:51
自己顶~~~~
点赞  2016-10-24 21:12
有人研究过相关的么~
点赞  2016-10-25 12:50
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复