前言:stm32系列提供了可编程电压检测器PVD,它是实时检测VDD的电压,当检测到电压低于或者高于PVD设置的阈值时,会想内核产生一个PVD中断(EXTI线中断)以使内核在复位前进行紧急处理。该电压阈值可通过PWR_CSR设置。
PVD可配置8个等级:
代码设计:
#include "stm32f10x.h"
#include "stdio.h"
static void EXTI_Configuration(void);
static void PVD_NVIC_Configuration(void);
static void USART1_Config(void);
static void Delay(__IO u32 nCount);
int main(void)
{
USART1_Config();//使用串口1来打印调试信息
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE); //使能PVD电压检测模块的时钟
//通过执行下面两个中断配置函数后,当VDD电压高于或者低于阈值时,就会进入PVD_IRQHandler中断
EXTI_Configuration();//配置EXTI_Line16外部中断
PVD_NVIC_Configuration();//PVD中断优先级
PWR_PVDLevelConfig(PW