logo
carrot

太阳当空照,花儿对我笑

stm32 hal flash读写

9/3/2023, 4:56:40 PM
  1. 首页
  2. /
  3. 正文
uint32_t Robot_Num_Flash_Add = 0x08010000;
FLASH_EraseInitTypeDef My_Flash; //声明 FLASH_EraseInitTypeDef 结构体为 My_Flash
HAL_FLASH_Unlock(); //解锁Flash

My_Flash.TypeErase = FLASH_TYPEERASE_PAGES; //标明Flash执行页面只做擦除操作
My_Flash.PageAddress = Robot_Num_Flash_Add; //声明要擦除的地址
My_Flash.NbPages = 1; //说明要擦除的页数,此参数必须是Min_Data = 1和Max_Data =(最大页数-初始页的值)之间的值

uint32_t PageError = 0; //设置PageError,如果出现错误这个变量会被设置为出错的FLASH地址
HAL_FLASHEx_Erase(&My_Flash, &PageError); //调用擦除函数擦除
uint16_t Write_Flash_Data = 0x16;
for (uint8_t i = 0; i < 10; i++) {
	HAL_FLASH_Program(FLASH_TYPEPROGRAM_HALFWORD, Robot_Num_Flash_Add+i*2, Write_Flash_Data);
}

HAL_FLASH_Lock(); //锁住Flash

uint16_t readData = *(__IO uint16_t*)(Robot_Num_Flash_Add); //*(__IO uint16_t *)是读取该地址的参数值,其值为16位数据,一次读取两个字节,*(__IO uint32_t *)就一次读4个字节
printf("readData:0x%x\r\n", readData);
热门文章
标签云
© 2021 Copyright 本站由 upyun 提供储存服务