学习地址:https://www.bilibili.com/video/BV1zt411D7qr/?p=13&spm_id_from=333.880.my_history.page.click&vd_source=b91967c499b23106586d7aa35af46413,野火的霸道,使用正点原子的 STM32F407 单片机。
关键步骤及程序:
#include "inter_flash.h"
#include "usart.h"
/* 可以定义一个数组来存放要写入的多个地址. */
void inter_flash_test(void)
{
/* 向内部Flash中写入数据, 遵循下面五个步骤 */
// 1.解锁
// 2.擦除
// 3.写入
// 4.上锁
// 5.读取校验(可选)
char *p = (char *)TEST_ADDRESS;
FLASH_Status status;
FLASH_Unlock(); // 1.解锁
status = FLASH_EraseSector(FLASH_Sector_2, VoltageRange_3);// 2.擦除
if(status == FLASH_COMPLETE)
{
printf("扇区删除完成.\r\n");
}
else
{
printf("扇区删除失败.\r\n");
}
status = FLASH_ProgramByte(TEST_ADDRESS, TEST_DATA); // 3.写入
if(status == FLASH_COMPLETE)
{
printf("写入完成.\r\n");
}
else
{
printf("写入失败.\r\n");
}
/* (覆盖)写入(该地址,这里指TEST_ADDRESS)之前, 仍然要先删除扇区,同样的对于该扇区的其他地址第一次写入可以,(覆盖)写入则不行. */
FLASH_Lock(); // 4.上锁
printf("从测试地址%x读取到的内容是0x%x.\r\n", TEST_ADDRESS, *p); // 5.读取校验
}
完整工程已上传到资料库。