[疑难问答] 单片机C语言code与data的作用

[复制链接]
136|31
primojones 发表于 2026-10-18 21:49 | 显示全部楼层
明确指定变量存储在内部数据存储器,即单片机的片内RAM。
earlmax 发表于 2026-10-19 08:40 | 显示全部楼层
RM Cortex-M是冯·诺依曼架构,程序和数据统一编址,没有code/data关键字。但Flash和RAM的物理区分依然存在,通过链接脚本和const关键字管理
uptown 发表于 2026-10-19 15:19 | 显示全部楼层
code变量只能读,不能写。写入会导致未定义行为。

code变量不能取地址赋给普通指针,因为地址空间不同。需要code指针。
bestwell 发表于 2026-10-19 18:48 | 显示全部楼层
RAM非常小,而Flash较大。如果不加code,常量表会默认放在RAM中,迅速耗尽RAM。加上code后,常量表存放在Flash中,节省RAM,但只能读,不能写。
mnynt121 发表于 2026-10-19 21:05 | 显示全部楼层
code用于将数据存放在程序存储器 中。
wwppd 发表于 2026-10-20 12:10 | 显示全部楼层
data用于将变量存放在片内RAM的低128字节(00H~7FH),这是8051中访问速度最快的存储区。
lzbf 发表于 2026-10-20 15:37 | 显示全部楼层
它们的存储位置有什么不同?              
zerorobert 发表于 2026-10-20 21:04 | 显示全部楼层
code和data关键字在哈佛架构单片机上意义重大,因为程序和数据在物理上是分开的,需要显式指定存放位置。
olivem55arlowe 发表于 2026-10-21 11:27 | 显示全部楼层
指向code区数据的指针需声明为char code *ptr,否则编译器可能生成错误的访问指令
mickit 发表于 2026-10-21 16:11 | 显示全部楼层
告诉编译器将定义的变量或数组存储在‌程序存储器‌中,而不是数据存储器中。
zerorobert 发表于 2026-10-21 19:58 | 显示全部楼层
通过Keil编译输出的Program Size确认Code/RO-data/RW-data/ZI-data分布,确保Flash和RAM未超限
minzisc 发表于 2026-10-21 20:54 | 显示全部楼层
如何选择合适的存储类型?              
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部