欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  网络运营

HAL库之读写STM32F103内部的FLASH空间

程序员文章站 2022-03-18 10:00:05
在此声明——本文摘自这里:【码神岛】STM32F0x HAL库学习笔记(5)片内FLASH的读写操作本文开发环境MCU型号:STM32F103C8T6IDE环境: MDK 5.25代码生成工具:STM32CubeMx 5.0.1HAL库版本:v1.9.0本文内容MCU片内Flash(闪存)的擦除与读写一个Flash读写例子/*main.c中的代码*/void FLASH_EEPROM_Write(uint32_t n);uint32_t FLASH_EEPROM_Read(...

在此声明——本文摘自这里:
【码神岛】STM32F0x HAL库学习笔记(5)片内FLASH的读写操作

本文开发环境

  1. MCU型号:STM32F103C8T6
  2. IDE环境: MDK 5.25
  3. 代码生成工具:STM32CubeMx 5.0.1
  4. HAL库版本:v1.9.0

本文内容

  1. MCU片内Flash(闪存)的擦除与读写
  2. 一个Flash读写例子

HAL库之读写STM32F103内部的FLASH空间

/*main.c中的代码*/
void FLASH_EEPROM_Write(uint32_t n);
uint32_t FLASH_EEPROM_Read(void);


int main(void)
{     
    uint32_t Read;
    HAL_Init();
    SystemClock_Config();
    MX_GPIO_Init();
    MX_USART1_UART_Init();                      //USART1串口的波特率为115200
    KEY_Init();
    
    printf("**************888888******************\r\n");//表示串口没有问题
    Read=FLASH_EEPROM_Read();
    printf("Read:%d\r\n",Read);//每次上电读取FLASH中的内容
    
    while (1)
    {     

        FLASH_EEPROM_Write(4000);
    }
}
/**
  * @brief  在FLASH中存储变量值,目前并不清楚这个程序有多大,能写到多少页,先定义在第127页中
  * @param  用STM32中FLASH存储空间模拟EEPROM的读写
  * @retval 参数:写入要存储的值
  */
void FLASH_EEPROM_Write(uint32_t n)
{
    HAL_FLASH_Unlock();     //解锁
    uint32_t PageError = 0;
    if (HAL_FLASHEx_Erase(&EraseInitStruct,&PageError) == HAL_OK) //如果结构体中的起始地址0x0801FC00,这一页的数据擦除成功,返回OK
    {
        printf("擦除 成功\r\n");
    }
    uint32_t writeFlashData = n;        //代写入的值
    uint32_t addr = 0x0801FC00;                  //写入的地址
    HAL_FLASH_Program(FLASH_TYPEPROGRAM_WORD,addr, writeFlashData); //向FLASH中写入
    printf("at address:0x%x, read value:%d\r\n", addr, *(__IO uint32_t*)addr);
    HAL_FLASH_Lock();
    while(1);
}
/**
  * @brief  读出存储地址中的内容
  * @param  用STM32中FLASH存储空间模拟EEPROM的读写
  * @retval 返回值:从FLASH中读出数据
  */
uint32_t FLASH_EEPROM_Read(void)
{
    HAL_FLASH_Unlock();
    uint32_t Page = 0;
    uint32_t addr = 0x0801FC00;                  //写入的地址
    Page=*(__IO uint32_t*)addr;
    return Page;
}

最后在调试助手上查看结果:
HAL库之读写STM32F103内部的FLASH空间
结束

本文地址:https://blog.csdn.net/qq_45661238/article/details/108568854