STM32 可編程電壓監(jiān)測器(PVD)
STM32內(nèi)部自帶PVD功能,用于對MCU供電電壓VDD進(jìn)行監(jiān)控。通過電源控制寄存器中的PLS[2:0]位可以用來設(shè)定監(jiān)控電壓的閥值,通過對外部電壓進(jìn)行比較來監(jiān)控電源。當(dāng)條件觸發(fā),需要系統(tǒng)進(jìn)入特別保護(hù)狀態(tài),執(zhí)行緊急關(guān)閉任務(wù):對系統(tǒng)的一些數(shù)據(jù)保存起來,同時對外設(shè)進(jìn)行相應(yīng)的保護(hù)操作。
操作流程:
1)、系統(tǒng)啟動后啟動PVD,并開啟相應(yīng)的中斷。
PWR_PVDLevelConfig(PWR_PVDLevel_2V8); // 設(shè)定監(jiān)控閥值
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;//電壓低于閥值時產(chǎn)生中斷
EXTI_InitStructure.EXTI_LineCmd = ENABLE; // 使能中斷線
EXTI_Init(&EXTI_InitStructure); // 初始
EXTI_InitStructure.EXTI_Trigger的賦值可選項:
EXTI_Trigger_Rising---表示電壓從高下降到低于設(shè)定閥值時產(chǎn)生中斷;
EXTI_Trigger_Falling---表示電壓從低上升到高于設(shè)定閥值時產(chǎn)生中斷;
EXTI_Trigger_Rising_Falling---表示電壓上升或下降越過設(shè)定閥值時都產(chǎn)生中斷。
2)、當(dāng)工作電壓低于設(shè)定閥值時,將產(chǎn)生PVD中斷,在中斷程序中進(jìn)行相應(yīng)的處理:
void PVD_IRQHandler(void)
{
EXTI_ClearITPendingBit(EXTI_Line16);
…… // 用戶添加緊急處理代碼處
}