stm32F103C8t6擦除flash的例程
时间: 2023-09-19 08:11:45 浏览: 48
以下是使用HAL库擦除STM32F103C8T6芯片Flash的例程:
```c
#include "stm32f1xx_hal.h"
void erase_flash(void)
{
FLASH_EraseInitTypeDef erase_init;
uint32_t page_error;
HAL_StatusTypeDef status;
// 解锁Flash
HAL_FLASH_Unlock();
// 配置Flash擦除参数
erase_init.TypeErase = FLASH_TYPEERASE_PAGES;
erase_init.PageAddress = FLASH_BASE;
erase_init.NbPages = (FLASH_BANK1_END - FLASH_BASE) / FLASH_PAGE_SIZE;
// 开始擦除Flash
status = HAL_FLASHEx_Erase(&erase_init, &page_error);
// 判断是否擦除成功
if (status != HAL_OK)
{
// 擦除失败
// 处理错误
}
// 重新锁定Flash
HAL_FLASH_Lock();
}
```
该例程使用了HAL库的Flash擦除函数`HAL_FLASHEx_Erase`,需要注意的是,该函数只能擦除一个或多个连续的页(Page),不能擦除部分页。因此,在配置Flash擦除参数时,需要将`NbPages`参数设置为要擦除的页数,这里使用了`FLASH_BANK1_END - FLASH_BASE`计算出整个Flash的页数。