硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1819|回复: 11
收起左侧

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

[复制链接]

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106760
QQ
发表于 2021-10-19 12:37:50 | 显示全部楼层 |阅读模式
比如获R4寄存器

  1. __STATIC_INLINE uint32_t __get_R4(void)
  2. {
  3.   register uint32_t __regR4          __ASM("r4");
  4.   return(__regR4);
  5. }
复制代码


回复

使用道具 举报

18

主题

285

回帖

339

积分

高级会员

积分
339
发表于 2021-10-24 20:53:17 | 显示全部楼层
少个等号?这样__regR4 = __ASM("r4");  ???
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106760
QQ
 楼主| 发表于 2021-10-25 02:17:08 | 显示全部楼层
木兰花 发表于 2021-10-24 20:53
少个等号?这样__regR4 = __ASM("r4");  ???

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

使用道具 举报

18

主题

285

回帖

339

积分

高级会员

积分
339
发表于 2021-10-25 12:38:28 | 显示全部楼层
eric2013 发表于 2021-10-25 02:17
没有少,就是这样的定义的。

这是什么语法,看不懂啊
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106760
QQ
 楼主| 发表于 2021-10-26 12:02:18 | 显示全部楼层
木兰花 发表于 2021-10-25 12:38
这是什么语法,看不懂啊

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

使用道具 举报

2

主题

9

回帖

15

积分

新手上路

积分
15
发表于 2022-7-26 12:04:21 | 显示全部楼层
您好,请问是将代码放到哪里,我就把代码单独拎主函数好多报错点 然后在core_cm3.h中找到了类似的函数 把给的代码放进去 进行声明 依然报错
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

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

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

使用道具 举报

2

主题

9

回帖

15

积分

新手上路

积分
15
发表于 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找到的
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106760
QQ
 楼主| 发表于 2022-7-27 10:15:35 | 显示全部楼层
火车跑步机 发表于 2022-7-27 09:41
您好 报错解决了 好像是把那个__STATIC换成小写就行 还想问下大佬,这个是读取出R4寄存器的值而不是地址
...

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

使用道具 举报

2

主题

9

回帖

15

积分

新手上路

积分
15
发表于 2022-7-27 14:16:36 | 显示全部楼层
eric2013 发表于 2022-7-27 10:15
1、新版CMSIS已经有__STATIC定义了。
2、R寄存器不在内存映射地址上,他是独立的控制单元。

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

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106760
QQ
 楼主| 发表于 2022-7-29 09:12:02 | 显示全部楼层
火车跑步机 发表于 2022-7-27 14:16
明白了,那请问操作R寄存器是不是只能用汇编语言来操作

楼主位的不就是C方式。
回复

使用道具 举报

2

主题

9

回帖

15

积分

新手上路

积分
15
发表于 2022-7-31 10:50:38 | 显示全部楼层
eric2013 发表于 2022-7-29 09:12
楼主位的不就是C方式。

那请问对R寄存器写操作是使用汇编吗
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-5 01:33 , Processed in 0.511537 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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