我配置方式:
//PVD检测配置中断
//NVIC_ClearIRQChannelPendingBit(PVD_IRQChannel);
NVIC_InitStructure.NVIC_IRQChannel = PVD_IRQChannel;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
//配置掉电检测接口
PWR_PVDLevelConfig(PWR_PVDLevel_2V2); // 设定监控阀值
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_Rising_Falling;//电压低于阀值时产生
//中断
EXTI_InitStructure.EXTI_LineCmd = ENABLE; // 使能中断线
EXTI_Init(&EXTI_InitStructure); // 初始
//EXTI_InitStructure.EXTI_Trigger的赋值可选项:
//EXTI_Trigger_Rising---表示电压从高下降到低于设定阀值时产生中断;
//EXTI_Trigger_Falling---表示电压从低上升到高于设定阀值时产生中断;
//EXTI_Trigger_Rising_Falling---表示电压上升或下降越过设定阀值时都产生中断。
中断服务函数:
当工作电压低于设定阀值时,将产生PVD中断,在中断程序中进行相应的处理:
void PVD_IRQHandler(void)
{
EXTI_ClearITPendingBit(EXTI_Line16);
…… // 用户添加紧急处理代码处
}
这里面还有错吗?
为什么上电的时候,不进入中断啊?
我是在中断设置个标志,如果进中断,能同过串口查出来。
|