eric2013 发表于 2021-10-19 12:37:50

C代码获取M内核寄存器数值方法

比如获R4寄存器

__STATIC_INLINE uint32_t __get_R4(void)
{
register uint32_t __regR4          __ASM("r4");
return(__regR4);
}


木兰花 发表于 2021-10-24 20:53:17

少个等号?这样__regR4 = __ASM("r4");???

eric2013 发表于 2021-10-25 02:17:08

木兰花 发表于 2021-10-24 20:53
少个等号?这样__regR4 = __ASM("r4");???

没有少,就是这样的定义的。

木兰花 发表于 2021-10-25 12:38:28

eric2013 发表于 2021-10-25 02:17
没有少,就是这样的定义的。

这是什么语法,看不懂啊

eric2013 发表于 2021-10-26 12:02:18

木兰花 发表于 2021-10-25 12:38
这是什么语法,看不懂啊

MDK里面带的方式,我也是照葫芦画瓢搞了个,测试可用

火车跑步机 发表于 2022-7-26 12:04:21

您好,请问是将代码放到哪里,我就把代码单独拎主函数好多报错点 然后在core_cm3.h中找到了类似的函数 把给的代码放进去 进行声明 依然报错

eric2013 发表于 2022-7-26 12:55:36

火车跑步机 发表于 2022-7-26 12:04
您好,请问是将代码放到哪里,我就把代码单独拎主函数好多报错点 然后在core_cm3.h中找到了类似的函数 把给 ...

升级你的CMSIS软件包到最新的5.9.0就可以了。

火车跑步机 发表于 2022-7-27 09:41:10

eric2013 发表于 2022-7-26 12:55
升级你的CMSIS软件包到最新的5.9.0就可以了。

您好 报错解决了 好像是把那个__STATIC换成小写就行 还想问下大佬,这个是读取出R4寄存器的值而不是地址

The ASM command displays or sets the current assembly address, or assembles an instruction.
ASM 命令显示或设置当前汇编地址,或汇编一条指令。

这两句话是在keil的heip 里面搜索 ASM找到的

eric2013 发表于 2022-7-27 10:15:35

火车跑步机 发表于 2022-7-27 09:41
您好 报错解决了 好像是把那个__STATIC换成小写就行 还想问下大佬,这个是读取出R4寄存器的值而不是地址
...

1、新版CMSIS已经有__STATIC定义了。
2、R寄存器不在内存映射地址上,他是独立的控制单元。

火车跑步机 发表于 2022-7-27 14:16:36

eric2013 发表于 2022-7-27 10:15
1、新版CMSIS已经有__STATIC定义了。
2、R寄存器不在内存映射地址上,他是独立的控制单元。

明白了,那请问操作R寄存器是不是只能用汇编语言来操作

eric2013 发表于 2022-7-29 09:12:02

火车跑步机 发表于 2022-7-27 14:16
明白了,那请问操作R寄存器是不是只能用汇编语言来操作

楼主位的不就是C方式。

火车跑步机 发表于 2022-7-31 10:50:38

eric2013 发表于 2022-7-29 09:12
楼主位的不就是C方式。

那请问对R寄存器写操作是使用汇编吗
页: [1]
查看完整版本: C代码获取M内核寄存器数值方法