[STC单片机] keil C51结构体二维数组赋值问题

[复制链接]
3225|8
 楼主| kq851211 发表于 2021-11-6 11:14 | 显示全部楼层 |阅读模式
C51, keil, ic, ST, AC, ROM
本帖最后由 kq851211 于 2021-11-6 13:57 编辑

请问谁遇到过这种问题吗?

我定义了个结构体数组,StruMicMode code tb_mic_mode[4][10],结构体定义为
typedef struct
{
u8 flag;
u8 freq;
u16 t_act;      
u16 t_int;      
}StruMicMode;

将这二维数组是4*10大小,并存储到ROM中。数组tb_mic_mode[0]
并未填满10时,未填部分keil并不是填充为0,而是将
tb_mic_mode[1]的数据直接填充到其后。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
fpgamcudsp 发表于 2021-11-9 10:16 | 显示全部楼层
反正要初始化后使用。不影响吧。
ayb_ice 发表于 2021-11-9 10:43 | 显示全部楼层
本帖最后由 ayb_ice 于 2021-11-9 10:45 编辑

被优化了吧
xyz549040622 发表于 2021-11-12 16:47 | 显示全部楼层
有可能就是被优化掉了,你加Volatile申明试试
 楼主| kq851211 发表于 2021-11-19 18:00 | 显示全部楼层
xyz549040622 发表于 2021-11-12 16:47
有可能就是被优化掉了,你加Volatile申明试试

没用的,试过加Volatile,也在keil里修改了优化级别,还是一样
 楼主| kq851211 发表于 2021-11-19 18:01 | 显示全部楼层
fpgamcudsp 发表于 2021-11-9 10:16
反正要初始化后使用。不影响吧。

实际的值跟我程序里设置的值不一样呀
weibo718 发表于 2021-11-19 20:24 | 显示全部楼层
这个问题很怪,有可能是因为溢出,比如某些地方的内存定义重合了,后面的会冲掉前面的。
hello、C 发表于 2021-11-19 21:54 | 显示全部楼层
elife 发表于 2021-11-20 20:59 | 显示全部楼层
这个是不是个显示的问题,实际编译后的文件还是会默认不初始化的,都是0xff。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

21

帖子

1

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