| FLASH_FLAG_PGERR | FLASH_FLAG_WRPRTERR);FLASH_ProgramWord(addr, data);FLASH_LockBank1();
FLASH_ProgramHalfWord(startAddress+dataIndex*2,writeData[dataIndex]); } FLASH_Lock();//上锁写保护} 在擦除之前应该将页面上的数据读取出来与要写入的数据合并,待擦除后再写入,但这样数据量很大(大容量是2K一个扇区),所以考虑到是少量数据存储,所以每次都将全部数据同时写入,简化操作,也减少数据处理量。经测...
FLASH_Status FLASH_ProgramWord(uint32_t Address, uint32_t Data);FLASH_Status FLASH_ProgramHalf...
intmain(void){u32 in_data[5]={11,22,33,44,55};//要写入的数据u32 out_data[5];//读存放inti;u8 STATUS=0;USART1_Config();//串口1配置GPIO_Configuration();//GPIO配置,用于点亮ledSTATUS=Internal_WriteFlash(0x08001800,in_data,5);Delay(0x02FFFF);if(STATUS){GPIO_SetBits(GPIOD,GPIO_Pi...
本次使用RT-Thread studio编写,使用为5.02完整版,目的是将内部flash进行分区,可以直接在内部flash存储数据。 一、功能配置 首先是打开设置里的FAL组件,因为我这里不需要外部内存,SFUD驱动就没打开: 然后是配置两个参数,一个在board.h里,定义BSP_USING_ON_CHIP_FLASH,一个是在stm32xxxx_hal_config.h里定义HAL_FLA...
uint16_t FLASH_ReadHalfWord(uint32_t address) { return *(__IO uint16_t*)address; } //读取指定地址的全字(32位数据) uint32_t FLASH_ReadWord(uint32_t address) { uint32_t temp1,temp2; temp1=*(__IO uint16_t*)address; temp2=*(__IO uint16_t*)(address+2); ...
__attribute__((used))NVM_DRIVER_SECTION FLASH_StatusFLASH_ProgramWord(uint32_tAddress,uint32_tData){ FLASH_Status status = FLASH_COMPLETE; __IOuint32_ttmp =0;FLASH_WaitForLastOperation(ProgramTimeout,&status);if(status == FLASH_COMPLETE) ...
此处使用库函数中的FLASH_ErasePage和FLASH_ProgramWord函数。由于提取的函数最终是以数组的形式存在,以函数指针的方式进行调用,所以函数中不能存在全局变量或调用其他的函数。需要将原库函数中的函数的调用函数使用宏定义的方式进行定义,使用do while语法实现。 擦除函数 __attribute__((used)) NVM_DRIVER_SECTION FL...
FLASHStatus = FLASH_ProgramWord(FLASH_START_ADDRESS + offset, Data); // FLASHStatus = FLASH_ProgramWord(StartAddress+4, 0xA234567B);812 } FLASH_Lock(); } 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. ...
FLASH_ProgramHalfWord(startAddress+dataIndex*2,writeData[dataIndex]); } FLASH_Lock();//上锁写保护 } 在擦除之前应该将页面上的数据读取出来与要写入的数据合并,待擦除后再写入,但这样数据量很大(大容量是2K一个扇区),所以考虑到是少量数据存储,所以每次都将全部数据同时写入,简化操作,也减少数据处理量。经...