stm32f103 HAL库flash 擦除扇区代码
时间: 2023-09-10 08:06:24 浏览: 79
以下是使用STM32F103 HAL库擦除flash扇区的示例代码:
```
FLASH_EraseInitTypeDef EraseInitStruct;
uint32_t SectorError = 0;
// 初始化擦除结构体
EraseInitStruct.TypeErase = FLASH_TYPEERASE_SECTORS; // 擦除类型为扇区
EraseInitStruct.Sector = FLASH_SECTOR_0; // 擦除扇区的编号
EraseInitStruct.NbSectors = 1; // 擦除的扇区数量
EraseInitStruct.VoltageRange = FLASH_VOLTAGE_RANGE_3; // 擦除电压范围
HAL_FLASH_Unlock(); // 解锁flash
// 检查是否有操作正在进行
if(HAL_FLASHEx_Erase(&EraseInitStruct, &SectorError) != HAL_OK)
{
// 擦除失败
}
HAL_FLASH_Lock(); // 锁定flash
```
在此示例中,我们使用了`FLASH_SECTOR_0`作为要擦除的扇区,你可以根据需要更改该参数。还要注意,在擦除flash之前必须先解锁flash,擦除完成后再锁定flash。
相关问题
stm32f103 hal库 flash 读保护函数
STM32F103 HAL库中有一个FLASH读保护函数可以使用。该函数名为HAL_FLASHEx_OB_RDPConfig(),用于配置STM32F103芯片的读保护选项字节。
以下是使用该函数的示例代码:
```
FLASH_OBProgramInitTypeDef OBInit;
//先解锁Flash
HAL_FLASH_Unlock();
//配置选项字节
OBInit.OptionType = OPTIONBYTE_RDP;
OBInit.RDPLevel = OB_RDP_LEVEL_1; //设置为Level 1的读保护
HAL_FLASHEx_OBProgram(&OBInit);
//锁定Flash
HAL_FLASH_Lock();
```
这段代码将芯片的读保护级别设置为Level 1。如果您需要将其设置为Level 0(即不使用读保护),则可以将OB_RDP_LEVEL_1改为OB_RDP_LEVEL_0。
需要注意的是,一旦启用读保护,将无法再次禁用它。因此,请谨慎地使用此功能。
stm32f103 hal库 flash 写保护 调用实例
好的,下面是一个简单的调用实例:
```c
/* 解锁 flash */
HAL_FLASH_Unlock();
/* 关闭所有的 flash 写保护 */
__HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_EOP | FLASH_FLAG_PGERR | FLASH_FLAG_WRPERR);
HAL_FLASH_OB_Unlock();
FLASH_OBProgramInitTypeDef ob_config;
HAL_FLASHEx_OBGetConfig(&ob_config);
ob_config.OptionType = OPTIONBYTE_WRP;
ob_config.WRPSector = OB_WRP_SECTOR_All;
HAL_FLASHEx_OBProgram(&ob_config);
/* 锁定 flash */
HAL_FLASH_Lock();
```
这段代码主要的作用是解锁 flash、关闭所有的 flash 写保护、将所有扇区设置为可写保护,最后再锁定 flash。需要注意的是,这个代码是针对 STM32F103 系列的 HAL 库,其他系列的 HAL 库可能会有所不同,需要根据具体的情况进行修改。