本帖最后由 50031185 于 2018-8-15 20:36 编辑 先引用参考手册中关于定时器描述的一段话 讲的是 定时器在设置UDIS为1 后, 计数器和预分频计数器会从0 重新计数,可是实际仿真过程中 却出现了不一样的现象,定时器的计数器并没有像手册上说的会清零, 不知道是 MDK的问题还是我理解的不对 The UEV event can be disabled by software by setting the UDIS bit in the TIMx_CR1 register. This avoids updating the shadow registers while writing new values into the preload registers. In this way, no update event occurs until the UDIS bit has been written to 0, however, the counter and the prescaler counter both restart from 0 (but the prescale rate does not change). In addition, if the URS (update request selection) bit in the TIMx_CR1 系统使用Cube 生成的 RTOS,使用HAL库 具体现象如图: 下图是定时器6 进入中断函数后, 执行了断点暂停,此时进行手动操作寄存器CR1的 UDIS CNT 计数器的值已经继续走了一段, 下图是仿真时暂停后, 第一次将CR1的UDIS 位置1 ,可是发现计数器的值并没有清零,而是变了一个值 接着再操作将UDIS 位 置0, 再将UDIS 位 置1, 可以发现 每次操作都会使 定时器计数器的值 改变, 但不是置0 ,这与手册上说的不一致, 大家看看这是什么原因 |
定时器的某些特定寄存器只能全速运行,不适合进行断点观察数值。
评分
查看全部评分
评分
查看全部评分
停止控制位清零只是停止了定时器计数而已,计数值要用户自己清零。