STM32内部自带PVD功用,用于对MCU供电电压VDD进行监控。经过电源操控寄存器中的PLS[2:0]位能够用来设定监控电压的阀值,经过对外部电压进行比较来监控电源。当条件触发,需求体系进入特别维护状况,履行紧迫封闭使命:对体系的一些数据保存起来,一起对外设进行相应的维护操作。
操作流程:
1)、体系发动后发动PVD,并敞开相应的中止。
PWR_PVDLevelConfig(PWR_PVDLevel_2V8); // 设定监控阀值
PWR_PVDCmd(ENABLE); // 使能PVD
EXTI_StrucTInit(&EXTI_InitStructure);
EXTI_InitStructure.EXTI_Line = EXTI_Line16; // PVD连接到中止线16上
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; //运用中止形式
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Raising;//电压低于阀值时发生中止
EXTI_InitStructure.EXTI_LineCmd = ENABLE; // 使能中止线
EXTI_Init(&EXTI_InitStructure); // 初始
EXTI_InitStructure.EXTI_Trigger的赋值可选项:
EXTI_Trigger_Rising—表明电压从高下降到低于设定阀值时发生中止;
EXTI_Trigger_Falling—表明电压从低上升到高于设定阀值时发生中止;
EXTI_Trigger_Rising_Falling—表明电压上升或下降跳过设定阀值时都发生中止。
2)、当作业电压低于设定阀值时,将发生PVD中止,在中止程序中进行相应的处理:
void PVD_IRQHandler(void)
{
EXTI_ClearITPendingBit(EXTI_Line16);
…… // 用户增加紧迫处理代码处
}