初级会员

- 积分
- 93
- 金钱
- 93
- 注册时间
- 2019-5-24
- 在线时间
- 21 小时
|
2金钱
大家好,我是想通过PVD来做芯片的掉电检测,然后去保存一些数据。发现触发方式设置为下降沿机器关电居然进不了PVD,必须是设置为EXTI_Trigger_Rising_Falling的方式,很奇怪,要给你示波器看了VCC是从3.3V慢慢降到0V的。从3.3V降到2V维持了200MS的样子。麻烦懂的大牛指点下,谢谢!代码只放了相关的,其他的省略。
void EXTI_Configuration(void)
{
EXTI_InitTypeDef EXTI_InitStructure;
NVIC_InitTypeDef NVIC_InitStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR|RCC_APB1Periph_BKP,ENABLE);
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);//选择优先级分组 ,抢占优先级1位,副优先级3位
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
NVIC_InitStructure.NVIC_IRQChannel=PVD_IRQn; //Pvd
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority=0;
NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
NVIC_Init(&NVIC_InitStructure);
EXTI_DeInit();
EXTI_StructInit(&EXTI_InitStructure);
EXTI_ClearITPendingBit(EXTI_Line16);
EXTI_InitStructure.EXTI_Line = EXTI_Line16;
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
EXTI_InitStructure.EXTI_Trigger =EXTI_Trigger_Rising_Falling;// EXTI_Trigger_Falling;下降沿检测进不了中断
EXTI_InitStructure.EXTI_LineCmd = ENABLE;
EXTI_Init(&EXTI_InitStructure);
}
void PVD_Config(void)
{
PWR_PVDCmd(ENABLE);
PWR_PVDLevelConfig(PWR_PVDLevel_2V9);
}
void PVD_IRQHandler(void)
{
if(EXTI_GetITStatus(EXTI_Line16) != RESET)// if(EXTI_GetITStatus(PWR_FLAG_PVDO)!=RESET)
{
EXTI_ClearITPendingBit(EXTI_Line16);
writeAllEepromData();//保存数据
}
}
|
|