SMT32 MDK 环境关于 volatile 变量出错 什么原因

2019-12-31 19:19发布

项目中从NAND flash 读出的的临时数组 数据经常变化怎么办
比如定义
NAND_ADDRESS HandAddr;//片外手动操作地址
uint8_t HandBuffer [200]; //手动操作临时数组
还有类似的别的存储,
在查询别的NANFLASH地址数据时候, 经常把
HandBuffer [200];  里边的内容改变, 至今不知什么原因,
想了办法
把数据定义成
volatile  uint8_t HandBuffer [200]; //手动操作临时数组 ,
在另外一个文件是使用HandBuffer [200];
extern volatile  uint8_t HandBuffer [200]; //手动操作临时数组 ,

可是编辑出现警告什么原因
....UserEthernetInternet cp_demo.c(1192): warning:  #167-D: argument of type "volatile uint8_t *" is incompatible with parameter of type "uint8_t *"
....UserEthernetInternet cp_demo.c(1205): warning:  #167-D: argument of type "volatile uint8_t *" is incompatible with parameter of type "void *restrict"
25条回答
security
2020-01-01 23:09
jiangzhimin 发表于 2017-2-15 08:30
想了个办法是对NANDFLLASH  在主体循环中不断的读取,这是个笨的办法,
各位大师,NANDFLASH 进行读取,理 ...

你应该根据前面坛友的建议,去抓下问题。

问题的本质,就是内存被篡改了,看看是否越界,指针指向错误等,你要去 debug,逐步排除可疑因素,这要靠你自己努力了。
找到问题后,可以来分享下,现阶段,靠这些信息,信息量不够,别人真心帮不了你什么。

一周热门 更多>