完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
请教各位关于C51和ARM读写寄存器方式区别的疑惑
C51里访问寄存器的方式是:例如sfr P0 = 0x80; 然后对P0的赋值就可以读写这个寄存器了, C语言和汇编语言的接口就是这个sfr指令 而ARM架构里,在C程序中翻到最后就只能看到define定义了一个地址,例如 #define UART1_BASE (APB2PERIPH_BASE+0x3800),然后对UART_BASE赋值就可以读写这个相关寄存器,难道在Arm架构里,C语言和汇编的接口就是#define指令? |
|
相关推荐
3个回答
|
|
这个就是寄存器地址转换吧 #define UART1_BASE (APB2PERIPH_BASE+0x3800)
|
|
|
|
ARM里面是对地址直接操作,arm里面都是这样。主要是指针和结构体。
|
|
|
|
不要被 SFR define 这些字眼迷惑了。这些都是给编译器看的。看起来形式 不一样,但是最终执行起来都是 给某个地址赋值。比如
*(uv32 *)0x20002000 = 0x0A; |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1085 浏览 0 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
1041 浏览 2 评论
2145 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
1240 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
1660 浏览 1 评论
浏览过的版块 |
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-25 04:11 , Processed in 0.870106 second(s), Total 79, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号