stm32 HAL PVD 电源监测

2019-07-14 00:07发布

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)足够长,来进行你需要的操作