我的程序void flash_burnflag(void) { uint16_t fromapp_flag = 0x0888; uint32_t FROMAPP_ADDRESS = 0x8007FFE; HAL_FLASH_Unlock();//解锁Flash HAL_FLASH_Program(FLASH_TYPEPROGRAM_HALFWORD, FROMAPP_ADDRESS, fromapp_flag); HAL_FLASH_Lock(); //锁住Flash }复制代码1,上面的程序在一个全新工程,只放这个函数,成功,可以用st的下载程序读出指定内存位置为0x0888 2,但是放在我实际程序APP(实际环境是BOOT+APP)中, 实际程序APP里面有串口DMA接收中断,这个程序里除了flash_burnflag这个函数,没有flash相关操作了, 函数flash_burnflag不论在初始化位置还是串口接收中断里面执行,都不成功,为0000 请问这是为什么呢? 请问需要处理Write protection和erase吗?
评分
查看全部评分
写数据是把为“0”的位清0,不能把flash中为“0”的位值“1”
评分
查看全部评分
评分
查看全部评分