同样的一块板子,用官方的例程读写flash没问题,移植到自己的项目就出现写flash进hard fault的问题,总共也就用了3个函数,
Flash_Init();Flash_SectorErase();Flash_WriteByte();
翻官方用户手册看到一句话,如下图。
看了一下自己的项目编译出来有130K,主要是液晶显示的字模用了很多。
于是做了个测试,把液晶显示的代码都去掉了,编译剩30多K,就没有出现写flash进hard fault的问题。
那么,官方的这句话是哪个意思呢?
1、把en_result_t Flash_SectorErase(uint32_t u32SectorAddr)这个函数指定到小于32768的FLASH地址即可。
2、把官方库文件的整个flash.c都指定到小于32768的FLASH地址。
3、把所有涉及flash读写的代码包括官方库文件和自己写的代码全都指定到小于32768的FLASH地址。
|