你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32 F2 仿真时 定时器出现异常现象

[复制链接]
AI++ 提问时间:2018-8-15 20:32 /
本帖最后由 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

1.jpg

CNT 计数器的值已经继续走了一段,

下图是仿真时暂停后, 第一次将CR1的UDIS 位置1 ,可是发现计数器的值并没有清零,而是变了一个值


2.jpg

接着再操作将UDIS 位 置0,
3.jpg


再将UDIS 位 置1,


4.jpg


可以发现 每次操作都会使 定时器计数器的值 改变, 但不是置0 ,这与手册上说的不一致, 大家看看这是什么原因










收藏 评论3 发布时间:2018-8-15 20:32

举报

3个回答
wenyangzeng 回答时间:2018-8-15 20:40:56
本帖最后由 wenyangzeng 于 2018-8-15 20:42 编辑

定时器的某些特定寄存器只能全速运行,不适合进行断点观察数值。

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

feixiang20 回答时间:2018-8-15 23:09:34
定时/计数器...(将计数允许/停止控制位CEN—TIM1_CR1[0]清0)。是不是不能清0

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

wenyangzeng 回答时间:2018-8-16 09:54:43
feixiang20 发表于 2018-8-15 23:09
定时/计数器...(将计数允许/停止控制位CEN—TIM1_CR1[0]清0)。是不是不能清0

停止控制位清零只是停止了定时器计数而已,计数值要用户自己清零。

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版