小橘仔 发表于 2017-1-7 23:14:29

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);                     }       

无薪税绵 发表于 2017-1-23 10:19:41

FLASH_SAVE_ADDR 这个地址会不会错了?
指向了非Flash区域?

Paderboy 发表于 2017-1-23 10:30:57

你可以参考下,F3 HAL库里的NUCLEO_STM32F302R8 FLASH_EraseProgram例程。。 :loveliness:

boboo-23776 发表于 2017-1-23 11:47:44

读写flash 错误了

zoomdy 发表于 2017-1-23 12:33:51

有没有产生异常?

zoomdy 发表于 2017-1-23 12:37:19

      /*ErasePage page ((uint32_t)0x0807F800)      //起始位*/            
   FLASH_ErasePage(FLASH_SAVE_ADDR);
STM32F302R8是64K Flash的,不知道FLASH_SAVE_ADDR是怎么定义的,如果是注释中的0x0807F800,那么该地址超出64K 地址范围了。

toofree 发表于 2017-1-23 17:23:07

zoomdy 发表于 2017-1-23 12:37
STM32F302R8是64K Flash的,不知道FLASH_SAVE_ADDR是怎么定义的,如果是注释中的0x0807F800,那么该地址超 ...

有道理,先确保在Flash地址范围内

队长shiwo 发表于 2017-1-23 17:36:57

学习学习

cldym 发表于 2017-1-23 20:21:57

有没有产生异常?
页: [1]
查看完整版本: eeprom_emulation 基于 NUCLEO_STM32F302R8T6 Kit 调不通