- 核心流程:程序先初始化系统时钟,然后执行「FLASH 擦除 → 擦除校验 → 数据写入 → 写入校验」的完整流程,验证 FLASH 读写功能。
- 关键操作:GD32 的 FLASH 操作必须先调用
fmc_unlock()解锁,操作完成后调用fmc_lock()锁定,防止误操作;FLASH 写入前必须擦除,擦除后数据为 0xFFFFFFFF。
- 地址规则:FLASH 按字(4 字节)编程时,地址必须 4 字节对齐;本示例操作的是扇区 1(0x08004000~0x08007FFF),大小 16KB。
// 引入GD32F4xx系列单片机核心库头文件
#include "gd32f4xx.h"
// 引入GD32F4xx库配置头文件(用于选择需要编译的库模块)
#include "gd32f4xx_libopt.h"
// 引入系统滴答定时器配置头文件(用于系统延时等功能)
#include "systick.h"
/************************** FLASH相关宏定义 **************************/
// FLASH写入起始地址:0x08004000,对应FLASH扇区1的起始地址(GD32F407 FLASH扇区1大小为16KB)
#define FMC_WRITE_START_ADDR ((uint32_t)0x08004000U)
// FLASH写入结束地址:0x08007FFF,对应FLASH扇区1的结束地址
#define FMC_W