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