stm32 实现读写flash数据
注:读写操作需指定地址。例如: FLASH_START_ADDR 0x0801f000 //写入的起始地址
读取指定地址数据 a = FLASH_R(FLASH_START_ADDR);//从指定页的地址读FLASH
写入指定地址数据 FLASH_W(FLASH_START_ADDR,a); //从指定页的地址写入FLASH
#include "flash.h" //FLASH写入数据 void FLASH_W(u32 add,u16 dat){ //参数1:32位FLASH地址。参数2:16位数据 // RCC_HSICmd(ENABLE); //打开HSI时钟 FLASH_Unlock(); //解锁FLASH编程擦除控制器 FLASH_ClearFlag(FLASH_FLAG_BSY|FLASH_FLAG_EOP|FLASH_FLAG_PGERR|FLASH_FLAG_WRPRTERR);//清除标志位 FLASH_ErasePage(add); //擦除指定地址页 FLASH_ProgramHalfWord(add,dat); //从指定页的addr地址开始写 FLASH_ClearFlag(FLASH_FLAG_BSY|FLASH_FLAG_EOP|FLASH_FLAG_PGERR|FLASH_FLAG_WRPRTERR);//清除标志位 FLASH_Lock(); //锁定FLASH编程擦除控制器 } //FLASH读出数据 u16 FLASH_R(u32 add){ //参数1:32位读出FLASH地址。返回值:16位数据 u16 a; a = *(u16*)(add);//从指定页的addr地址开始读 return a; }

浙公网安备 33010602011771号