Owen.li 发表于 2018-4-28 15:52:29

STM32F042 PWR_PVD

各位大侠,如下配置,掉电不进中断,请问哪里问题?
void PVD_Configuration(void)
{
        #if 1
    EXTI_InitTypeDef EXTI_InitStructure;

    /* Enable PWR and BKP clock */
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE);

    /* Configure EXTI Line16(PVD Output) to generate an
   interrupt on rising and falling edges */
    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_InitStructure.EXTI_LineCmd = ENABLE;
    EXTI_Init(&EXTI_InitStructure);

        PWR_PVDLevelConfig(PWR_PVDLevel_7);

    /* Enable the PVD Output */
    PWR_PVDCmd(ENABLE);
    #endif
}


{
    /* Enable the PVD Interrupt */
    NVIC_InitStructure.NVIC_IRQChannel = PVD_IRQn;
    NVIC_InitStructure.NVIC_IRQChannelPriority = 0;
    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
    NVIC_Init(&NVIC_InitStructure);

}

す疯Ⅱ恒す 发表于 2018-4-28 16:35:04

下面那段代码是另外一个函数的么?看着那么奇怪的?另外你的中断服务函数呢?你怎么知道没进入中断呢?

Owen.li 发表于 2018-4-30 10:01:09

す疯Ⅱ恒す 发表于 2018-4-28 16:35
下面那段代码是另外一个函数的么?看着那么奇怪的?另外你的中断服务函数呢?你怎么知道没进入中断呢? ...

下面是一段函数提取出来的,中断函数:
void PVD_IRQHandler(void)
{       
        Puts("\r\n PVD_IRQHandler");
        if(EXTI_GetITStatus(EXTI_Line16) != RESET)
        {
                Puts("\r\n PVD_IRQHandler");
                EXTI_ClearITPendingBit(EXTI_Line16);
        }
}

す疯Ⅱ恒す 发表于 2018-4-30 21:48:54

Owen.li 发表于 2018-4-30 10:01
下面是一段函数提取出来的,中断函数:
void PVD_IRQHandler(void)
{       


你初始化的时候应该把中断相关配置好,比如上面的优先级。
还有,你是直接掉电的么?我估计串口没来得及发数据就没电了,或者你用可调电源试试,从3.3V电调到2.5V看看。
页: [1]
查看完整版本: STM32F042 PWR_PVD