eeprom_emulation 基于 NUCLEO_STM32F302R8T6 Kit 调不通
基于NUCLEO_STM32F302R8T6 Kit 调不通 关于FLASH 仿真eeprom_emulation 的程序调不通,因此来请教一下这只程序我已经成功在STM32F103 上面可以调通使用了,一切正常 但在STM32F3 系列的MCU 上面,程序会一直停在FLASH_ProgramWord(FLASH_SAVE_ADDR+0, 0x12345648); 应该说只要执行读写的动作,程序就会停止,例如以下两个库FLASH_ProgramWord(FLASH_SAVE_ADDR+0,Test_String); Test_Block = ( *(__IO uint32_t*)(FLASH_SAVE_ADDR+0) ); 是不是在F3 MCU 上面有什么需要注意的地方我忽略了?还请高手指导一下 以下为部分代码/* Unlock the Flash Program Erase controller */ FLASH_Unlock(); /*Clearn Flag*/ FLASH_ClearFlag(FLASH_FLAG_PGERR); FLASH_ClearFlag(FLASH_FLAG_WRPERR); FLASH_ClearFlag(FLASH_FLAG_EOP); FLASH_ClearFlag(FLASH_FLAG_BSY); /*ErasePage page ((uint32_t)0x0807F800) //起始位*/ FLASH_ErasePage(FLASH_SAVE_ADDR); /*Write data to EEPROM */ FLASH_ProgramWord(FLASH_SAVE_ADDR+0, Test_String); /* Lockthe Flash Program Erase controller */ FLASH_Lock(); /* Readdata from EEPROM to verification */ Test_Block = ( *(__IO uint32_t*) (FLASH_SAVE_ADDR+0) ); /*Output to check */ for(ia=0; ia<9 ; ia++) { USART_SendData(USART3,Test_Block); Delay(1); }FLASH_SAVE_ADDR 这个地址会不会错了?
指向了非Flash区域? 你可以参考下,F3 HAL库里的NUCLEO_STM32F302R8 FLASH_EraseProgram例程。。 :loveliness: 读写flash 错误了 有没有产生异常? /*ErasePage page ((uint32_t)0x0807F800) //起始位*/
FLASH_ErasePage(FLASH_SAVE_ADDR);
STM32F302R8是64K Flash的,不知道FLASH_SAVE_ADDR是怎么定义的,如果是注释中的0x0807F800,那么该地址超出64K 地址范围了。 zoomdy 发表于 2017-1-23 12:37
STM32F302R8是64K Flash的,不知道FLASH_SAVE_ADDR是怎么定义的,如果是注释中的0x0807F800,那么该地址超 ...
有道理,先确保在Flash地址范围内 学习学习 有没有产生异常?
页:
[1]