打印
[STM32F1]

PVD中断问题

[复制链接]
833|17
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
happy_10|  楼主 | 2021-5-9 21:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
STM32F103ZET6
ZET6的低电压中断,现在进不了中断,网上也看了很多资料,但是始终就不进不了中断,上升和下降都不进入中断

使用特权

评论回复
沙发
stly| | 2021-5-9 21:33 | 只看该作者
楼主程序可以公开吗?贴程序看下吧,这么说看不出什么原因

使用特权

评论回复
板凳
happy_10|  楼主 | 2021-5-9 21:39 | 只看该作者

这是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[i]);
                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);
        }
}

使用特权

评论回复
地板
happy_10|  楼主 | 2021-5-9 21:41 | 只看该作者
要使用PVD中断,连接备用电池的引脚是否一定要连接一个100nf的陶瓷电容到电源啊?

使用特权

评论回复
5
happy_10|  楼主 | 2021-5-9 21:43 | 只看该作者
我现在就没有加电容,是直接连接到3.3V电源的,还没来得及加陶瓷电容,先请教一下。上电时可以进入中断,用写I2C的方式,配置为上升和下降都中断时,只有上升可以中断,是硬件有问题吗?

使用特权

评论回复
6
chenjunt| | 2021-5-9 21:43 | 只看该作者
应该是你电路没有搞对,你就按照官方手册推荐的做呀,让你接电容就接。

使用特权

评论回复
7
jiajs| | 2021-5-9 21:45 | 只看该作者
代码具体的参加STM32提供的例程吧,硬件的连接也应该有一点的要求,请看手册,由于具体自己没有实现过,所以没有什么具体建议。

使用特权

评论回复
8
zhuhuis| | 2021-5-9 21:47 | 只看该作者
加电容试试,或许加电容后就可以了

使用特权

评论回复
9
gongche| | 2021-5-9 21:49 | 只看该作者
看看寄存器的状态来判断吧

使用特权

评论回复
10
zhuhuis| | 2021-5-9 21:51 | 只看该作者
就楼主上面贴出的代码看是有问题的。在主函数中
        uint8_t i;
        PWR_PVDLevelConfig(PWR_PVDLevel_2V8);//???这里的操作有效吗???
        PWR_PVDCmd(ENABLE);                           //???这里的操作有效吗???
        LED_GPIO_Config();
        PVD_Config();
…………
这个对PWR相关寄存器操作的时候没有开时钟,也就是说前两步是没有起到作用。

使用特权

评论回复
11
zwll| | 2021-5-9 21:53 | 只看该作者
你这个引脚是外部中断16吗?

使用特权

评论回复
12
juventus9554| | 2021-5-9 21:57 | 只看该作者
估计加上电容就可以了,按手册来

使用特权

评论回复
13
happy_10|  楼主 | 2021-5-9 21:58 | 只看该作者
好的,我明天去单位试一下,多谢各位大侠了哈

使用特权

评论回复
14
labasi| | 2021-6-2 18:20 | 只看该作者
开启总中断了吗

使用特权

评论回复
15
paotangsan| | 2021-6-2 18:22 | 只看该作者
请问 pvd是一个什么功能呢

使用特权

评论回复
16
renzheshengui| | 2021-6-2 18:37 | 只看该作者
是不是硬件连接出现了问题呢

使用特权

评论回复
17
wakayi| | 2021-6-2 18:39 | 只看该作者
外部引脚加电容有什么关系呢

使用特权

评论回复
18
wowu| | 2021-6-2 18:40 | 只看该作者
没有开启时钟 那什么也实现不了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

744

主题

7973

帖子

6

粉丝