[STM32F1] 请教STM32F103ZE的PVD中断问题

[复制链接]
1982|10
 楼主| 七毛钱 发表于 2024-8-21 17:23 | 显示全部楼层 |阅读模式
ZET6的低电压中断,现在进不了中断,网上也看了很多资料,但是始终就不进不了中断,上升和下降都不进入中断,我把程序贴上,恳请前辈指点一下。


这是PVD中断配置函数:


void PVD_Config(void)
{
        NVIC_InitTypeDef NVIC_InitStructure;
        EXti_InitTypeDef EXTI_InitStructure;
        
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE);
        
        //PWR_PVDLevelConfig(PWR_PVDLevel_2V8);
        //PWR_PVDCmd(ENABLE);
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);
        NVIC_InitStructure.NVIC_IRQChannel = PVD_IRQn;
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
        NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2;
        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
        
        NVIC_Init(&NVIC_InitStructure);
        
        //EXTI_StructInit(&EXTI_InitStructure);
        //EXTI_ClearITPendingBit(EXTI_Line16);
        EXTI_InitStructure.EXTI_Line = EXTI_Line16;        //ía2¿ÖD¶ÏÏß16רÎaPVDÖD¶Ïê1óÃ
        EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
        EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising_Falling;        //μçÑ1μíóú·§Öμê±2úéúÖD¶Ï
        EXTI_InitStructure.EXTI_LineCmd = ENABLE;       //ê1Äü

        EXTI_Init(&EXTI_InitStructure);
}



这是主函数:
int main(void)
{
        uint8_t i;
        PWR_PVDLevelConfig(PWR_PVDLevel_2V8);
        PWR_PVDCmd(ENABLE);
        LED_GPIO_Config();
        PVD_Config();
        USART2_Config();
        
        for(i=0;i<9;i++)
        {
                USART_SendData(USART2, temp);
                while (USART_GetFlagStatus(USART2, USART_FLAG_TXE) == RESET);
        }
        while(1);

}

这是PVD中断函数:
void PVD_IRQHandler(void)
{
        if(EXTI_GetITStatus(EXTI_Line16) != RESET)
        {
                EXTI_ClearITPendingBit(EXTI_Line16);
                GPIO_SetBits(GPIOB, GPIO_Pin_0);
        }
}



始终看不到LED灯闪一下。另外请教一下,要使用PVD中断,连接备用电池的引脚是否一定要连接一个100nf的陶瓷电容到电源啊?我现在就没有加电容,是直接连接到3.3V电源的,还没来得及加陶瓷电容,先发个帖请教一下。
q1d0mnx 发表于 2024-8-31 19:22 | 显示全部楼层
中断源没选择错?
b5z1giu 发表于 2024-8-31 19:43 | 显示全部楼层
其实你直接看例程,用例程的基础上进行修改多好啊
cen9ce 发表于 2024-8-31 20:18 | 显示全部楼层
你用cubemx来配置一个,估计就可以使用了
d1ng2x 发表于 2024-8-31 20:34 | 显示全部楼层
你有没有可能都系统没有正常运行呢?
ex7s4 发表于 2024-8-31 20:58 | 显示全部楼层
这个我看好像也没啥问题吧,中断这部分来说
g0d5xs 发表于 2024-8-31 21:07 | 显示全部楼层
中断配置问题可能会引起这个,确保NVIC配置正确,使能了相应的中断通道。确认中断优先级配置是否合理。
kaif2n9j 发表于 2024-8-31 21:39 | 显示全部楼层
确认PVD配置正确,包括PVD的阈值设置和使能。检查PVD的上升沿和下降沿中断是否都已使能。
l1uyn9b 发表于 2024-8-31 22:09 | 显示全部楼层
电源电压问题也会引起你说的这个问题现象的
lamanius 发表于 2024-8-31 22:22 | 显示全部楼层
建议检查电源电压是否稳定,避免因电源波动导致无法触发中断。
lix1yr 发表于 2024-8-31 23:01 | 显示全部楼层
确认中断服务程序(ISR)是否正确编写,并且没有被其他代码阻塞。检查是否有其他中断优先级更高的中断在运行,导致PVD中断无法响应。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

400

主题

2801

帖子

4

粉丝
快速回复 在线客服 返回列表 返回顶部