stm32f103 hal库 flash 写保护 调用实例
时间: 2023-10-16 14:09:06 浏览: 107
好的,下面是一个简单的调用实例:
```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 库可能会有所不同,需要根据具体的情况进行修改。
相关问题
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_6;
HAL_FLASHEx_OBProgram(&ob_config);
/* 锁定 flash */
HAL_FLASH_Lock();
```
这段代码主要的作用是解锁 flash、关闭所有的 flash 写保护、将指定的扇区设置为可写保护,最后再锁定 flash。需要注意的是,这个代码是针对 STM32F103 系列的 HAL 库,其他系列的 HAL 库可能会有所不同,需要根据具体的情况进行修改。在这个例子中,我们将扇区 6 设置为写保护,可以根据需要进行修改。
stm32f103 Hal库 定时器中断
STM32F103系列微控制器中的HAL库(Hardware Abstraction Layer,硬件抽象层)是一个预定义的函数库,它封装了底层硬件资源,如定时器,使得开发者可以更方便、高效地控制设备。对于定时器中断,HAL库提供了一系列函数来配置定时器的工作模式,并设置相应的中断服务函数(ISR)。
在使用 HAL 库管理定时器时,一般步骤如下:
1. 初始化定时器:通过`TIM_HandleTypeDef`结构体实例化定时器,并调用对应的初始化函数,例如`HAL_TIM_Init()`,设置定时器的基本参数如周期、分频等。
2. 设置定时器事件:配置定时器的工作模式(比如PWM、计数、One Pulse等),并通过`HAL_TIM_SetPrescaler()`、`HAL_TIM_SetCounter()`等函数设置相关的值。
3. 开启中断:启用定时器的中断功能,通常使用`HAL_TIM_ITConfig()`来选择需要的中断(如溢出、到达预定值等)并开启它。
4. 配置中断处理程序:通过`HAL_NVIC_EnableIRQ(TIMx_IRQn)`,将定时器中断映射到系统中断向量表上,并设置中断回调函数,该函数将在定时器中断发生时被执行。
5. 启动定时器:调用`HAL_TIM_Start_IT(&htim.Instance)`启动定时器并立即触发中断。
当定时器达到预设条件或溢出时,会触发对应的中断,此时,如果你已经设置了中断服务函数,这个函数会被自动调用,你可以在这里处理你需要的特定任务。
阅读全文