gd32f103flash读写程序
时间: 2023-09-01 12:07:49 浏览: 85
以下是一个简单的 GD32F103 Flash 读写程序示例。假设你已经熟悉了 GD32F103 的 Flash 相关寄存器和功能,这里不再赘述。
注意:本程序只适用于在 Flash 末尾预留了一定空间的情况下进行 Flash 读写,如果你需要进行其他操作,需要自行修改代码。
```c
#include "gd32f10x.h"
#define FLASH_START_ADDR ((uint32_t)0x08000000) // Flash 起始地址
#define FLASH_END_ADDR ((uint32_t)0x08010000) // Flash 结束地址(预留 64KB 空间)
void flash_erase_page(uint32_t addr);
void flash_write_word(uint32_t addr, uint32_t data);
int main(void)
{
uint32_t i, data, addr;
// 使能 Flash 写入
fmc_unlock();
fmc_ready_wait();
// 擦除 Flash
for (i = FLASH_START_ADDR; i < FLASH_END_ADDR; i += FLASH_PAGE_SIZE) {
flash_erase_page(i);
}
// 写入数据
for (i = FLASH_START_ADDR; i < FLASH_END_ADDR; i += 4) {
data = i - FLASH_START_ADDR;
flash_write_word(i, data);
}
// 读取数据
for (i = FLASH_START_ADDR; i < FLASH_END_ADDR; i += 4) {
addr = i - FLASH_START_ADDR;
data = *(uint32_t *)i;
}
// 禁止 Flash 写入
fmc_lock();
while (1);
}
// 擦除 Flash 页
void flash_erase_page(uint32_t addr)
{
fmc_page_erase(addr);
fmc_ready_wait();
}
// 写入 Flash 单字
void flash_write_word(uint32_t addr, uint32_t data)
{
fmc_word_program(addr, data);
fmc_ready_wait();
}
```
以上是一个简单的 GD32F103 Flash 读写程序示例,可以按照自己的需求进行修改。