关于stm8的cc寄存器读取问题!
在IAR用PD_ODR_ODR3 = CPU_CCR_C; 无法赋值成功,仿真中看到 CPU_CCR_C的值是有变化的,但是赋值到PD_ODR_ODR3时,PD_ODR_ODR3总是等于0。PD_ODR_ODR3=1;这样正常赋值是没有问题。希望知道的大神指点一下!这个问题被遗忘了,顶 本帖最后由 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:47 编辑
还有,在stm8.h中对这些只由调试模块访问的CPU寄存器是没有做定义的,我是自己加了定义、地址映射后去调试的。你不加还能编译通过?难道我们的头文件不一样? zhuoyemp4 发表于 2015-5-11 15:05
还有,在stm8.h中对这些只由调试模块访问的CPU寄存器是没有做定义的,我是自己加了定义、地址映射后去调试 ...
用的是IAR,这个问题我解决了!!假如要真的这样读bit,嵌入汇编即可!! zhuoyemp4 发表于 2015-5-11 15:05
还有,在stm8.h中对这些只由调试模块访问的CPU寄存器是没有做定义的,我是自己加了定义、地址映射后去调试 ...
头文件我用的是具体的ic型号,不是stm8.h,里面是有定义的 PD_ODR_ODR3 这是一个位操作的,只能是0或1,不能为别的值 超级小新 发表于 2015-5-16 09:34
头文件我用的是具体的ic型号,不是stm8.h,里面是有定义的
不管怎样,cpu寄存器只由调试模块访问,写程序是访问不了的
页:
[1]