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

关于stm8的cc寄存器读取问题!

[复制链接]
超级小新 提问时间:2015-5-2 16:53 /
在IAR用  PD_ODR_ODR3 = CPU_CCR_C;   无法赋值成功,仿真中看到 CPU_CCR_C的值是有变化的,但是赋值到PD_ODR_ODR3时,PD_ODR_ODR3总是等于0。PD_ODR_ODR3=1;这样正常赋值是没有问题。希望知道的大神指点一下!
收藏 评论7 发布时间:2015-5-2 16:53

举报

7个回答
沐紫 回答时间:2015-5-11 13:14:56
这个问题被遗忘了,顶
zhuoyemp4 回答时间:2015-5-11 14:49:26
本帖最后由 zhuoyemp4 于 2015-5-11 15:15 编辑

在数据手册中,Register map一节中,表格 CPU/SWIM/debug module/interrupt controller registers下面有条对CPU寄存器的注释,“Accessible by debug module only”(只由调试模块访问)。我在IAR中调试观察CPU_CCR_C的值,发现程序执行到A=B+C;(B=0XB5,C=0X94,肯定让C置位)但还没执行这句时,C已经是1了,执行完这句,C就成0了。就像你的程序里,在执行到PD_ODR_ODR3 = CPU_CCR_C; 时,C已经是0了。
zhuoyemp4 回答时间:2015-5-11 15:05:53
本帖最后由 zhuoyemp4 于 2015-5-11 15:47 编辑

还有,在stm8.h中对这些只由调试模块访问的CPU寄存器是没有做定义的,我是自己加了定义、地址映射后去调试的。你不加还能编译通过?难道我们的头文件不一样?
超级小新 回答时间:2015-5-16 09:28:18
zhuoyemp4 发表于 2015-5-11 15:05
还有,在stm8.h中对这些只由调试模块访问的CPU寄存器是没有做定义的,我是自己加了定义、地址映射后去调试 ...

用的是IAR,这个问题我解决了!!假如要真的这样读bit,嵌入汇编即可!!
超级小新 回答时间:2015-5-16 09:34:46
zhuoyemp4 发表于 2015-5-11 15:05
还有,在stm8.h中对这些只由调试模块访问的CPU寄存器是没有做定义的,我是自己加了定义、地址映射后去调试 ...

头文件我用的是具体的ic型号,不是stm8.h,里面是有定义的
ynwscfsfi 回答时间:2015-5-16 10:08:53
PD_ODR_ODR3        这是一个位操作的,只能是0或1,不能为别的值
zhuoyemp4 回答时间:2015-5-16 10:13:49
超级小新 发表于 2015-5-16 09:34
头文件我用的是具体的ic型号,不是stm8.h,里面是有定义的

不管怎样,cpu寄存器只由调试模块访问,写程序是访问不了的

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版