STM32 单片机内部FLASH 读写完整工程代码
时间: 2024-11-04 15:13:56 浏览: 40
STM32单片机内部的Flash存储器通常用于长期保存程序数据。在实际项目中,操作Flash需要先对硬件进行初始化,然后通过HAL库提供的API进行读写。这里提供一个简单的示例,假设我们使用STM32F103系列的芯片,并且使用STM HAL库。
```c
#include "stm32f1xx_hal.h"
// Flash擦除、写入函数
void Flash_Erase Sector(uint32_t Address);
void Flash_Write(uint32_t Address, uint8_t *pData, uint32_t Size);
int main(void) {
// 初始化系统
HAL_Init();
// 配置系统时钟
SystemClock_Config();
// 擦除Flash某个扇区
Flash_Erase Sector(0x08000000); // 地址示例,实际应替换为你想要擦除的地址
// 读取缓冲区
uint8_t buffer[100]; // 示例缓冲区,存放待写入的数据
// 假设已经填充了buffer...
// 写入Flash
Flash_Write(0x08000000, buffer, sizeof(buffer)); // 写入地址和数据
while (1) {
// 程序主循环
}
}
// Flash擦除函数
void Flash_Erase Sector(uint32_t Address) {
HAL_FLASHEx_Erase(&hflash, Address, FLASH_BANK旌);
}
// Flash写入函数
void Flash_Write(uint32_t Address, uint8_t *pData, uint32_t Size) {
HAL_FLASHExProgram(&hflash, pData, Address, Size, FLASH_BANK旌);
}
```
请注意,这只是一个基本的框架,实际应用中还需要处理错误检查和中断嵌套等问题。另外,`SystemClock_Config()`需要根据你的STM32系列和具体的配置文件进行调整。
阅读全文