stm32 HAL PVD 电源监测

pvd.c

void PVD_Init(void)

{
    __HAL_RCC_PWR_CLK_ENABLE();
    PWR_PVDTypeDef PWR_PVDStruct;
    
    PWR_PVDStruct.PVDLevel = PWR_PVDLEVEL_6;             // 2.8V

    PWR_PVDStruct.Mode = PWR_PVD_MODE_IT_RISING;        //降至阈值电压时触发

                                                                                                          //谁能告诉我为什么是RISING不是FALLING

    HAL_PWR_ConfigPVD(&PWR_PVDStruct);
    
    HAL_PWR_EnablePVD();
}

/* 重写回调函数 */
void HAL_PWR_PVDCallback(void)
{
  HAL_GPIO_WritePin(Debug_LED_PORT, Debug_LED_PIN, GPIO_PIN_SET);           //debug_led亮
}


用中断
stm32f1xx_it.c
void PVD_IRQHandler(void)
{
  HAL_PWR_PVD_IRQHandler();
}

我用来在掉电时存储数据进flash,硬件上要保证掉电时间(从触发中断到电压降至2.0V)足够长,来进行你需要的操作

你可能感兴趣的:(stm32 HAL PVD 电源监测)