掉电检测PVD中断进不去

2019-08-14 19:50发布

现在在做掉电存储,直接存贮在FLASH上,手动存储,读取通过,在做掉电保存的时候,就是不成功!!用led做个中断指示,进入PVD中断就亮一下,可是不管怎么改还是不成功,进不了中断,我是在MINI 开发板上做的实验,我把备份电池已经取下了!程序部分如下
void PVD_Init(void) {      NVIC_InitTypeDef NVIC_InitStruct;    EXTI_InitTypeDef EXTI_InitStructure;
   NVIC_InitStruct.NVIC_IRQChannel = PVD_IRQn;    NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority = 0;    NVIC_InitStruct.NVIC_IRQChannelSubPriority = 2;    NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE;    
   NVIC_Init(&NVIC_InitStruct);//允许中断 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_Trigger_Rising;      EXTI_InitStructure.EXTI_LineCmd = ENABLE;      EXTI_Init(&EXTI_InitStructure);
    PWR_PVDLevelConfig(PWR_PVDLevel_2V5);      PWR_PVDCmd(ENABLE); RCC_APB1PeriphClockCmd( RCC_APB1Periph_PWR, ENABLE); //_PWR, ENABLE); // 这个是必需的  } //PVD中断函数如下 void PVD_IRQHandler(void) {

EXTI_ClearITPendingBit(EXTI_Line16); //必须在if外面。 if(PWR_GetFlagStatus(PWR_FLAG_PVDO)) //  { PWR_ClearFlag(PWR_FLAG_PVDO);
                 GPIO_ResetBits(GPIOD,GPIO_Pin_2); GPIO_SetBits(GPIOA,GPIO_Pin_8); //STMFLASH_Write(FLASH_SAVE_ADDR,(u16*)TEXT_Buffer,11);本想在这里进行存储操作  }
}
请各位高手给看看啊
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
7条回答
cdw0105
2019-08-14 23:54
这个恼火的问题我终于解决了啊,给大家提个醒
RCC_APB1PeriphClockCmd( RCC_APB1Periph_PWR, ENABLE); //_PWR, ENABLE); // 这个是必需的
PWR_PVDLevelConfig(PWR_PVDLevel_2V5); 
PWR_PVDCmd(ENABLE);
把这几句放在main函数里,PVD_Init();之上以后发现可以进中断了哦,可爱的小LED终于闪烁了一下,下一步实验,掉电中断里写内部FLASH

一周热门 更多>