我就怎么定义了一句
[mw_shl_code=c,true]char* Keybuffer = "";[/mw_shl_code]
使用时发现无法memcpy,单步调试发现该变量内存地址在0x08000A00(Flash里),真是怪事了。
另外一个工程里写有
[mw_shl_code=c,true]char buffer[3];[/mw_shl_code]
可以被正确memcpy,但是将该语句复制到这个程序也不行...全局和局部变量都不行。
两个工程除了main是不一样的,其他都是一样的
到底是怎么回事,不是会自动分配堆栈空间的吗,怎么跑到Flash里了
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
你看Keybuffer ,就用&Keybuffer 来查看。
---------------------------------
不可能。
Keybuffer 指向新的数据就是新的地址了。这个我用过不知道多少次了。。。
我在另一个程序里声明的变量也不能正常使用
[mw_shl_code=c,true]unsigned short InData; unsigned short OutData;[/mw_shl_code]
这两个是局部变量,一旦给他们赋值,程序就跑飞无法调试。
调试时发现之前的有一句
[mw_shl_code=c,true]InData = GUI_GetTime();[/mw_shl_code]
这句执行后,InData的地址竟然仍然没有被分配,查到是0x00000000
后面执行了
[mw_shl_code=c,true]*(__IO uint16_t*)(Address) = InData; OutData = *(__IO uint16_t*)(Address);[/mw_shl_code] 当给OutData赋值时,程序跑飞,但外部SRAM经验证可用
---------------------------------
我也觉得奇怪啊,很普通的一个变量,就是无法赋值,memcpy没有作用,地址指向Flash,根本查不到数据
---------------------------------
你是不是代码开启了-O2优化?
一周热门 更多>