gd32f103内部FLASH写入4500B数据
时间: 2023-11-27 13:04:51 浏览: 40
GD32F103系列MCU的内部Flash容量为64KB或者128KB,因此可以写入4500字节的数据。以下是一个示例代码,用于将4500字节的数据写入到GD32F103的内部Flash中:
```c
#include "gd32f1x0.h"
#define FLASH_WRITE_START_ADDR 0x08000000 // Flash起始地址
#define DATA_SIZE 4500 // 数据大小(字节)
#define PAGE_SIZE 1024 // Flash页大小(字节)
void flash_write(uint32_t address, uint8_t *data, uint16_t size)
{
fmc_unlock(); // 解锁FMC
uint16_t num_pages = size / PAGE_SIZE; // 计算需要写入的Flash页数
uint16_t last_page_size = size % PAGE_SIZE; // 计算最后一页的大小
// 擦除需要写入的Flash页
for (uint16_t i = 0; i < num_pages; i++)
{
fmc_page_erase(address + i * PAGE_SIZE);
}
if (last_page_size > 0)
{
fmc_page_erase(address + num_pages * PAGE_SIZE);
}
// 写入数据
for (uint16_t i = 0; i < size; i++)
{
fmc_word_program(address + i, data[i]);
}
fmc_lock(); // 锁定FMC
}
int main(void)
{
uint8_t data[DATA_SIZE]; // 待写入的数据
// 假设将数据填充为0x55
for (uint16_t i = 0; i < DATA_SIZE; i++)
{
data[i] = 0x55;
}
flash_write(FLASH_WRITE_START_ADDR, data, DATA_SIZE); // 写入Flash
while (1)
{
// 程序主循环
}
}
```
以上代码假设要将4500字节的数据填充为0x55,并写入到GD32F103的内部Flash中,起始地址为0x08000000。请根据实际需要进行修改和适配。注意,Flash的写入操作需要在解锁和锁定FMC之间进行,以确保安全性。