OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2978|回复: 5

寄存器读取值与实际值不符

[复制链接]

2

主题

6

帖子

0

精华

新手上路

积分
26
金钱
26
注册时间
2016-2-3
在线时间
3 小时
发表于 2017-7-20 09:54:54 | 显示全部楼层 |阅读模式
1金钱
在调试STM8S单片机时,遇到一个问题:
读取单片机时钟源时,读取的值与实际值不符。如下图所示:
QQ截图20170720093619.png
从图上可知:
MCU刚刚读取CLK_CMSR寄存器的值,由寄存器状态可知,此时该寄存器值为0xB4,但读取值却是0xE1 。

请问这是为什么?如何避免这样的情况发生?

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

6

帖子

0

精华

新手上路

积分
26
金钱
26
注册时间
2016-2-3
在线时间
3 小时
 楼主| 发表于 2017-7-20 10:38:24 | 显示全部楼层
本帖最后由 酱油小二 于 2017-7-20 10:40 编辑

添加问题现象:此问题在将IAR优化等级设置为None时出现,设置为Low时,能正常运行。

解决方法已经找到,但问题原因不明。
解决方法:在配置MCU时钟后,添加语句“while(!(CLK->ECKR & 0x02));”,用以等待MCU外部晶振准备就绪。此时就能正确读取数据了。


之所以说问题原因不明是因为:从问题描述的图中可以看到寄存器ECKR的HSERDY位已经置位(这个值被我的涂鸦挡住了,但确实是1),但现象好像外部晶振还是没有准备就绪。一定要添加等待语句,完全确认外部晶振准确就绪才行。而且不明白为什么将IAR优化等级设置为None时就会有问题;设置为Low时,就能正常运行。
回复

使用道具 举报

557

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165002
金钱
165002
注册时间
2010-12-1
在线时间
2102 小时
发表于 2017-7-21 01:49:04 | 显示全部楼层
直接将寄存器值printf出来看看
回复

使用道具 举报

2

主题

6

帖子

0

精华

新手上路

积分
26
金钱
26
注册时间
2016-2-3
在线时间
3 小时
 楼主| 发表于 2017-7-21 07:53:40 | 显示全部楼层
正点原子 发表于 2017-7-21 01:49
直接将寄存器值printf出来看看

原子哥,我有试过用printf打印出来,但打印结果还是0xE1。
请问printf打印出来的结果和watch窗口的结果会有区别吗?
回复

使用道具 举报

557

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165002
金钱
165002
注册时间
2010-12-1
在线时间
2102 小时
发表于 2017-7-23 00:38:36 | 显示全部楼层
酱油小二 发表于 2017-7-21 07:53
原子哥,我有试过用printf打印出来,但打印结果还是0xE1。
请问printf打印出来的结果和watch窗口的结果 ...

有时候会有.在使用了-O2,或者O1优化的时候,看watch窗口,可能看不到值.
如果还是不对,就找其他地方问题了
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

1

主题

12

帖子

0

精华

新手上路

积分
44
金钱
44
注册时间
2017-8-8
在线时间
4 小时
发表于 2017-8-8 09:47:55 | 显示全部楼层
stm8s默认的时钟就是内部16MHz的(就算你不设置时钟),你选择的B4是外部HSE时钟,就是说如果你需要用到HSE时钟,你需要在主时钟切换寄存器那里设置才可以,不然就是在使用内部16MHz的HSI时钟。怎么我导师跟我说8是不能用打印的
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-6-26 07:39

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表