我的PVD的驅動以及例程位於STM32L0xx_Drivers這個庫當中,在使用前最好先閱讀readme.md文件
PVD 是一種檢測MCU供電情況的技術。當供電電壓高於或者低於一定閾值的時候,可以在寄存器上體現出來,或者直接產生硬件中斷。
在實際使用MCU時,特別是電池供電的方案中,往往會遇到供電不夠導致MCU或者外設工作不正常的情況。PVD在這個時候就可以派上用場了。
PVD的使用按照數據手冊上的說明,就是首先設置PVD閾值(PVD thresholds),當MCU的VDD引腳的電壓高於閾值時,則PVD output=1,當VDD電壓低於閾值時,PVD output=0,如下圖所示:
其中PVD output的結果可以再在存器中查看到
關於PVD的閾值的設定共有兩種方式:
- 固定閾值(1.9V 2.1V 2.3V 2.5V 2.7V 2.9V 3.1V)
- 與引腳比較(PB7)
在實際使用的過程中,PVD可以用查詢揮着中斷的方式來工作。
在測試的例程中,我配置PVD工作方式為中斷上升下降沿觸發,當VDD高於預設PVD閾值或者低於閾值而產生邊沿觸發時,都會形成一次PVD中斷,然后讀取PWR_CSR的PVDO標志位檢查是低電壓提醒還是高電壓提醒,以此來達到監控MCU供電情況的目的。
注意:當使用PVD功能檢測低電壓時,VDD電壓剛剛小於閾值時並不會直接產生PVD中斷,只有當VDD電壓小於(閾值-50MV)時,才會產生中斷。
如果有什么疑問或者錯誤歡迎大家指正,email:454626653@qq.com