1、關(guān)于LVD功能的描述
LVD的功能是檢測(cè)VDD/VDDA供電電壓是否低于低電壓檢測(cè)閾值,該閾值由電源控制寄存器(PMU_CTL)中的LVDT[2:0]位進(jìn)行配置。LVD通過LVDEN置位使能,位于電源狀態(tài)寄存器(PMU_CS)中的LVDF位表示低電壓事件是否出現(xiàn),該事件連接至EXTI的第16線,用戶可以通過配置EXTI的第16線產(chǎn)生相應(yīng)的中斷。
2、相關(guān)寄存器
主要關(guān)注PMU_CTL
寄存器中的·LVDT和LVDEN字段
3、LVD中斷
4、LVD閾值波形圖
LVD閾值波形圖顯示了VDD / VDDA供電電壓和LVD輸出信號(hào)的關(guān)系。(LVD中斷信號(hào)依賴于EXTI第16線的上升或下降沿配置)。遲滯電壓Vhyst值為100mV。
這里要特別說明下:電壓上升時(shí),配置的是下降沿,電壓下降時(shí),配置的是上升沿。
5、相關(guān)庫(kù)函數(shù)
void pmu_lvd_select(uint32_t lvdt_n); //閾值配置,同時(shí)使能lvd功能
void pmu_lvd_disable(void); //失能lvd功能
6、核心代碼實(shí)現(xiàn)
void?lvd_init(void){
? ??pmu_lvd_select(PMU_LVDT_5);
? ??nvic_irq_enable(LVD_IRQn,13U,0U);
? ??exti_init(EXTI_16,?EXTI_INTERRUPT,?EXTI_TRIG_RISING);
? ??exti_interrupt_flag_clear(EXTI_16);
? ??exti_interrupt_enable(EXTI_16);
}
voidLVD_IRQHandler(void){
? ??if(exti_interrupt_flag_get(EXTI_16)==?SET){
? ? ? ??exti_interrupt_flag_clear(EXTI_16);
? ? ? ??dbg_info("%s","low voltagern");
? ? ? ??/* 此處加入應(yīng)用代碼 */
? ??}
}
7、測(cè)試
使用可調(diào)穩(wěn)壓電源,給mcu供電,將電壓調(diào)至設(shè)定的閾值,即可產(chǎn)生LVD中斷。