CSDN热搜
1.对于重装载寄存器的预加载来说,关键在于改变ARR的时间点和当前定时器的时间点(定时器的计数值) 2.对于比较寄存器的预加载来说,关键在于改变比较值的时间点和当前定时器的时间点(定时器的计数值)
使能预加载的情况下,开启通道后紧接着修改ARR值为20000,这时TIM1的计数值还没有跑到20000(定时器计数很慢) 结果为: 结果显示,开启预加载情况下,修改ARR的值,跑完初始化设定的5s,在下一个周期变为2s。
在保证定时器计数已经超过25000的情况下,紧接着设置周期值为20000(程序我验证过,不存在已经跑过一个tim周期的情况存在),结果如下: 结果依然是在当前周期不生效,在下一个周期生效。所以在使能了预加载的情况在,生效时间永远是在发生更新事件后的下一个周期(手册也描述了,更新事件后才载入工作寄存器),而不论你更改ARR的时间点在哪里。
结果如下: 结果显示,修改值立刻生效,这里先不下结论,先看最后一个实验
结果如下: 结果显示,第一个周期跑到了TIM1计数器的最大值(65535,示波器没那么精确),既不是50000,也不是20000。
使用道具 举报
本版积分规则 回帖并转播 回帖后跳转到最后一页
程序园优秀签约作者
0
粉丝关注
20
主题发布