超级小新 发表于 2015-5-2 16:53:05

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

在IAR用PD_ODR_ODR3 = CPU_CCR_C;   无法赋值成功,仿真中看到 CPU_CCR_C的值是有变化的,但是赋值到PD_ODR_ODR3时,PD_ODR_ODR3总是等于0。PD_ODR_ODR3=1;这样正常赋值是没有问题。希望知道的大神指点一下!

沐紫 发表于 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寄存器只由调试模块访问,写程序是访问不了的
页: [1]
查看完整版本: 关于stm8的cc寄存器读取问题!