STM32F103C8内部FLASH当EEPORM
在调试STM32F103C8内部FLASH当EEPORM使用时,一直没调通,求助友们;调了好几天没调通,读取指定位置没有问题,但是尝试擦除或者写入时就会死机,就是程序执行擦除FLASH_ErasePage()或者写入FLASH_ProgramHalfWord()这句时就会死机。把看门狗打看可以看到只要程序执行到擦除或者写入函数时就死机。再细致发现执行写入函数这一句*(__IO uint16_t*)baseaddr =就会死机,只要把这句*(__IO uint16_t*)baseaddr =删除跳过这一句就不会死机。求大家相助,谢谢,我把函简化成下面,就是会死机,万分求助
void FLASHINIT_FLASH(void)
{
FLASH_Unlock();//解锁
FLASH_ClearFlag(FLASH_FLAG_BSY|FLASH_FLAG_EOP|FLASH_FLAG_PGERR|FLASH_FLAG_WRPRTERR);//清除标志位
FLASH_ErasePage(0x08002a50);//要擦出页的起始地址
FLASH_ProgramWord(0x08002a50,0x1234);//写数据
//是一个字即四个字节
FLASH_Lock();//锁定
}
你看看在写入时有没有解锁FLASH,记住写完成后由“上锁”。 lilei900512 发表于 2018-6-4 11:18
你看看在写入时有没有解锁FLASH,记住写完成后由“上锁”。
在解锁的,测试过解锁位,确认已经解锁的 写的地址对吗? 楼主写FLASH的地址最好不要和程序的地址混在一起,单独找一个比较远的地址来测试。 安 发表于 2018-6-4 11:41
楼主写FLASH的地址最好不要和程序的地址混在一起,单独找一个比较远的地址来测试。 ...
看过没有和使用程序地址混在一起,我选择的位置是空位置 wudianjun2001 发表于 2018-6-4 11:30
写的地址对吗?
写的地址对的,没有问题,对应的地址地空的,没有给使用的程序占用 需要判断FLASH->SR。 在不busy的时候再去写入 jgmqt 发表于 2018-6-4 11:23
在解锁的,测试过解锁位,确认已经解锁的
那你看看是不是写的区域不对,不能写在程序所在部分。 ST官方有代码可以参考呀
页:
[1]
2