STM32 F2 仿真时 定时器出现异常现象
本帖最后由 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 ,这与手册上说的不一致, 大家看看这是什么原因
本帖最后由 wenyangzeng 于 2018-8-15 20:42 编辑
定时器的某些特定寄存器只能全速运行,不适合进行断点观察数值。 定时/计数器...(将计数允许/停止控制位CEN—TIM1_CR1清0)。是不是不能清0 feixiang20 发表于 2018-8-15 23:09
定时/计数器...(将计数允许/停止控制位CEN—TIM1_CR1清0)。是不是不能清0
停止控制位清零只是停止了定时器计数而已,计数值要用户自己清零。
页:
[1]