OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3538|回复: 3

我把STM32F030C8T6的PC14配置成外部中断,为什么用SWD仿真的时候一直触发中断?

[复制链接]

13

主题

41

帖子

0

精华

初级会员

Rank: 2

积分
145
金钱
145
注册时间
2021-9-15
在线时间
74 小时
发表于 2021-12-27 13:52:44 | 显示全部楼层 |阅读模式
1金钱
void EXTI_Int_Init(void)
{
        GPIO_InitTypeDef GPIO_InitStructure;
        EXTI_InitTypeDef EXTI_InitStructure;
        NVIC_InitTypeDef NVIC_InitStructure;
        RCC_AHBPeriphClockCmd(POWER1_GPIO_CLK|POWER2_GPIO_CLK|POWER3_GPIO_CLK|POWER6_GPIO_CLK,ENABLE);
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG,ENABLE);
        GPIO_InitStructure.GPIO_Pin=POWER1_GPIO_Pin;
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN;
        GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_UP;
        GPIO_Init(POWER1_GPIO_PORT,&GPIO_InitStructure);
       
        GPIO_InitStructure.GPIO_Pin=CoinGet_GPIO_Pin;
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN;
        GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_UP;
        GPIO_Init(POWER2_GPIO_PORT,&GPIO_InitStructure);

        GPIO_InitStructure.GPIO_Pin=POWER2_GPIO_Pin;
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN;
        GPIO_InitStructure.GPIO_Speed=GPIO_Speed_2MHz;
        GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_UP;
        GPIO_Init(POWER2_GPIO_PORT,&GPIO_InitStructure);
       
        GPIO_InitStructure.GPIO_Pin=POWER3_GPIO_Pin|POWER4_GPIO_Pin|POWER5_GPIO_Pin|POWER7_GPIO_Pin|POWER8_GPIO_Pin|POWER9_GPIO_Pin|POWER10_GPIO_Pin;;
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN;
        GPIO_InitStructure.GPIO_Speed=GPIO_Speed_10MHz;
        GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_UP;
        GPIO_Init(POWER3_GPIO_PORT,&GPIO_InitStructure);
       
        GPIO_InitStructure.GPIO_Pin=POWER6_GPIO_Pin;
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN;
        GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_UP;
        GPIO_Init(POWER6_GPIO_PORT,&GPIO_InitStructure);
       
        SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOA,EXTI_PinSource0);
        SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOA,EXTI_PinSource1);
        SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOA,EXTI_PinSource5);
        SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOF,EXTI_PinSource7);
        SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOA,EXTI_PinSource8);
        SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOA,EXTI_PinSource9);
        SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOA,EXTI_PinSource10);
        SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOA,EXTI_PinSource11);
        SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOB,EXTI_PinSource15);
        SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOC,EXTI_PinSource13);
        SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOA,EXTI_PinSource14);
       
        EXTI_InitStructure.EXTI_Line=EXTI_Line0|EXTI_Line1|EXTI_Line5|EXTI_Line7|EXTI_Line8|EXTI_Line9|EXTI_Line10|EXTI_Line11|EXTI_Line13|EXTI_Line15;
        EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt;
        EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Falling;
        EXTI_InitStructure.EXTI_LineCmd=ENABLE;
        EXTI_Init(&EXTI_InitStructure);
       
        EXTI_InitStructure.EXTI_Line=EXTI_Line14;
  EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt;
        EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Falling;
        EXTI_InitStructure.EXTI_LineCmd=ENABLE;
        EXTI_Init(&EXTI_InitStructure);
       
        NVIC_InitStructure.NVIC_IRQChannel=EXTI0_1_IRQn;
        NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
        NVIC_InitStructure.NVIC_IRQChannelPriority=0X02;
        NVIC_Init(&NVIC_InitStructure);
       
        NVIC_InitStructure.NVIC_IRQChannel=EXTI4_15_IRQn;
        NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
        NVIC_InitStructure.NVIC_IRQChannelPriority=0X01;
        NVIC_Init(&NVIC_InitStructure);
}
void EXTI4_15_IRQHandler(void)
{
        if(EXTI_GetITStatus(EXTI_Line14)!= RESET)
        {
                EXTI_ClearITPendingBit(EXTI_Line14);
                Count.cnt2++;
        }
}
这里的POWER2_GPIO_Pin是PC14.
只要用SWD模式一仿真Count.cnt2的值就不断增加,不仿真的时候用按键Count.cnt2的值却不增加,我用的数码管显示Count.cnt2的值。

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

80

主题

931

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3348
金钱
3348
注册时间
2013-5-28
在线时间
468 小时
发表于 2021-12-27 14:38:44 | 显示全部楼层
PC14不用想了,经常性的,可以尝试加个2K左右的上拉或者下拉电阻,再加个RC作为输入滤波.
从它这个脚的命名也看得出来,这就是个坑货脚.PC14-OSC32_IN.
可以试下软件能不能滤掉,建议使用其它引脚作为中断触发.
回复

使用道具 举报

13

主题

41

帖子

0

精华

初级会员

Rank: 2

积分
145
金钱
145
注册时间
2021-9-15
在线时间
74 小时
 楼主| 发表于 2021-12-27 16:21:07 | 显示全部楼层
聚东风 发表于 2021-12-27 14:38
PC14不用想了,经常性的,可以尝试加个2K左右的上拉或者下拉电阻,再加个RC作为输入滤波.
从它这个脚的命名也 ...

PCB上本来就搞了2K的上拉电阻,还有100纳法的滤波电容,还是不行
回复

使用道具 举报

80

主题

931

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3348
金钱
3348
注册时间
2013-5-28
在线时间
468 小时
发表于 2021-12-27 16:24:26 | 显示全部楼层
本帖最后由 聚东风 于 2021-12-27 16:25 编辑
sy695970322 发表于 2021-12-27 16:21
PCB上本来就搞了2K的上拉电阻,还有100纳法的滤波电容,还是不行

030好像无解的,那就乖乖换引脚吧,这个时钟引脚问题很多的,不适合做数字电路使用,比起其他引脚功能少了很多.其他的芯片比如303就好很多,你可以试下,有一样封装的
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-21 01:51

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表