本帖最后由 SCREA 于 2016-12-20 15:04 编辑
比如F103ZET6.程序体在0x0800 0000 ~ 0x0800 FFFF内
[mw_shl_code=c,true]const u8 TEXT_Buffer[]={"STM32 FLASH TEST"};
const u8 buf[100] @ 0x0801 0000 = {1,2,3,4,5};
const u8 *p = buf;
STMFLASH_Write((u32)p,(u32*)TEXT_Buffer,100);[/mw_shl_code]
Debug发现 怎么也不能擦除复写buf区域----那100个字节。
============
上传原子工程,感兴趣的可以试试,const修饰的变量绝对不是想擦哪就擦哪(当前只试过F103、407、L0XX)
若是你没试过,就不要凭感觉回答否定我的结论
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
如果想指定CONST数组的地址 请这样表示
const u8 TEXT_Buffer[100] __attribute__((at(0x08010000))) ={"STM32 FLASH TEST"};
如果想擦除这个数组所在的数据,需要如下操作
1、得到需要擦除的扇区的地址 (绝对地址)
2、FLASH解锁
3、调用FLASH外设库中 STMFLASH_EraseSector(ADDR) 函数 ,用于擦除这个扇区
4、FLASH加锁
注意:在执行擦除FLASH及编程FLASH函数时,必须先执行FLASH解锁,否则会出现编程错误且FLASH不再允许擦除及编程操作,直到下次复位。当执行复位时FLASH的编程错误标记会清零
一周热门 更多>