STM32 读写内部 Flash

学习地址: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.读取校验
}

完整工程已上传到资料库。

猜你喜欢

转载自blog.csdn.net/xuechanba/article/details/129699926