通过用户手册知道stm32h743具有PVD和BOR功能。
FLASH 选项状态寄存器(FLASH_OPTSR_CUR)
BOR_LEV:欠压电压选项状态位 (Brownout level option status bit和SYSCFG
用户寄存器 2 (SYSCFG_UR2)
BORH[1:0]:BOR_LVL 欠压复位阈值电压 (BOR_LVL Brownout Reset Threshold Level)这些位指示欠压复位阈值电压。
但是我通过仿真器查看这些寄存器的值,发现它跟手册上的默认值不一致,按照网上的方法修改也不起作用
[C] 纯文本查看 复制代码 /* BOR欠压复位配置函数*/
void BOR_Config(void)
{
FLASH_OBProgramInitTypeDef sConfigBOR = {0};
/* 解锁FLAS,解锁OB */
HAL_FLASH_Unlock();
HAL_FLASH_OB_Unlock();
/* 获取当前Option Byte配置 */
HAL_FLASHEx_OBGetConfig(&sConfigBOR);
if ((sConfigBOR.USERConfig & 0x700) != OB_BOR_LEVEL_4) //检查掉电复位电平是否正确
{
sConfigBOR.OptionType = OPTIONBYTE_USER;
sConfigBOR.USERType = OB_USER_BOR_LEV;
sConfigBOR.USERConfig = OB_BOR_LEVEL_4; //设置掉电复位电平
HAL_FLASHEx_OBProgram(&sConfigBOR);
/* 开始对选项字节进行编程 */
HAL_FLASH_OB_Launch();
}
/* 锁定Flash,锁定OB */
HAL_FLASH_OB_Lock();
HAL_FLASH_Lock();
}
|