stm32f103 hal库 flash 打开指定位置写保护 调用实例
时间: 2023-10-16 16:09:06 浏览: 41
好的,下面是一个简单的调用实例:
```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库 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 库可能会有所不同,需要根据具体的情况进行修改。
使用hal库写一个stm32f103c8t6上的uart配置
好的,以下是一个使用HAL库配置STM32F103C8T6上的UART的示例代码:
```
#include "stm32f1xx_hal.h"
UART_HandleTypeDef huart;
void UART_Init(void)
{
huart.Instance = USART1;
huart.Init.BaudRate = 115200;
huart.Init.WordLength = UART_WORDLENGTH_8B;
huart.Init.StopBits = UART_STOPBITS_1;
huart.Init.Parity = UART_PARITY_NONE;
huart.Init.Mode = UART_MODE_TX_RX;
huart.Init.HwFlowCtl = UART_HWCONTROL_NONE;
huart.Init.OverSampling = UART_OVERSAMPLING_16;
if (HAL_UART_Init(&huart) != HAL_OK)
{
Error_Handler();
}
}
void Error_Handler(void)
{
// 在这里处理错误
}
int main(void)
{
HAL_Init();
UART_Init();
while (1)
{
// 在这里添加主要代码
}
}
```
在上面的代码中,我们首先定义了一个UART_HandleTypeDef结构体来配置UART。然后在UART_Init函数中,我们设置了USART1作为UART的实例,波特率为115200,数据位长度为8位,停止位为1位,校验位为无校验,工作模式为同时支持发送和接收,硬件流控制为无,过采样率为16。
最后,我们调用HAL_UART_Init函数来初始化UART。如果初始化失败,将会调用Error_Handler函数来处理错误。在主函数中,我们首先调用HAL_Init函数来初始化HAL库,然后调用UART_Init函数来初始化UART。在while循环中,我们可以添加主要代码来进行串口通信操作。