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

 

posted @ 2020-10-28 11:47  lisujing  阅读(1581)  评论(0)    收藏  举报