OpenEdv-开源电子网

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

stm32f103c8t6一个奇特的外部中断问题

[复制链接]

7

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
137
金钱
137
注册时间
2018-8-29
在线时间
17 小时
发表于 2018-9-27 14:13:00 | 显示全部楼层 |阅读模式
4金钱
1538028304(1).jpg 1538028099(1).png 1538028333(1).jpg 使用的开发板是stm32f103c8t6,在使用外部中断时发现,在配置gpio,nvic,exti后,EXTI0_IRQHandler,EXTI1_IRQHandler,EXTI9_5_IRQHandler,都可以正常进入,但是EXTI15_10_IRQHandler中断函数无法进入,默认是下降沿触发,这就是奇特之处,AFIO时钟在配置GPIO时已经开启,其余配置和能进入外部中断的配置相同,实在找不出问题所在,还望各位大佬指出。



最佳答案

查看完整内容[请看2#楼]

找到原因了,中断函数名字多了一个n太蠢了。。。。。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

7

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
137
金钱
137
注册时间
2018-8-29
在线时间
17 小时
 楼主| 发表于 2018-9-27 14:13:01 | 显示全部楼层
找到原因了,中断函数名字多了一个n太蠢了。。。。。
回复

使用道具 举报

1

主题

882

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3071
金钱
3071
注册时间
2018-2-7
在线时间
285 小时
发表于 2018-9-27 14:24:40 | 显示全部楼层
[mw_shl_code=c,true]#include "exti.h"
#include "key.h"
#include "delay.h"
#include "led.h"

//KEY0 PC1  KEY1 PC13  WK_UP  PA0
void EXTIx_Init(void)
{
    EXTI_InitTypeDef EXTI_InitStructure;
    NVIC_InitTypeDef NVIC_InitStructure;

    // 1、初始化IO
    KEY_Init();                                                                                                        //按键端口初始化
    // 2、开启AFIO时钟
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);                 //使能复用功能时钟
    // 3、设置IO口与中断线的映射关系
    GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource0);        //PA0
    // 4、初始化线上中断,设置触发条件
    EXTI_InitStructure.EXTI_Line = EXTI_Line0;                                        //WK_UP 上升沿
    EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
    EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;
    EXTI_InitStructure.EXTI_LineCmd = ENABLE;
    EXTI_Init(&EXTI_InitStructure);

    GPIO_EXTILineConfig(GPIO_PortSourceGPIOC, GPIO_PinSource1);        //PC1

    EXTI_InitStructure.EXTI_Line = EXTI_Line1;                                        //KEY0 下降沿
    EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
    EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
    EXTI_InitStructure.EXTI_LineCmd = ENABLE;
    EXTI_Init(&EXTI_InitStructure);

    GPIO_EXTILineConfig(GPIO_PortSourceGPIOC, GPIO_PinSource13);//PC13

    EXTI_InitStructure.EXTI_Line = EXTI_Line13;                                        //KEY1 上升沿
    EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
    EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
    EXTI_InitStructure.EXTI_LineCmd = ENABLE;
    EXTI_Init(&EXTI_InitStructure);
    // 5、配置中断分组,并使能中断
    NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn;
    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x02;
    NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x03;
    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
    NVIC_Init(&NVIC_InitStructure);

    NVIC_InitStructure.NVIC_IRQChannel = EXTI1_IRQn;
    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x02;
    NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x02;
    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
    NVIC_Init(&NVIC_InitStructure);

    NVIC_InitStructure.NVIC_IRQChannel = EXTI15_10_IRQn;
    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x02;
    NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x01;
    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
    NVIC_Init(&NVIC_InitStructure);
}

void EXTI0_IRQHandler(void)
{
    if(EXTI_GetITStatus(EXTI_Line0) != RESET)
    {
        delay_ms(10);
        if(WK_UP == 1)
        {
            LED0 = !LED0;
            LED1 = !LED1;
        }
        EXTI_ClearITPendingBit(EXTI_Line0);
    }
}
void EXTI1_IRQHandler(void)
{
    if(EXTI_GetITStatus(EXTI_Line1) != RESET)
    {
        delay_ms(10);
        if(KEY0 == 1)
        {
            LED0 = !LED0;
        }
        EXTI_ClearITPendingBit(EXTI_Line1);
    }
}
void EXTI15_10_IRQHandler(void)
{
    if(EXTI_GetITStatus(EXTI_Line13) != RESET)
    {
        delay_ms(10);
        if(KEY1 == 1)
        {
            LED1 = !LED1;
        }
        EXTI_ClearITPendingBit(EXTI_Line13);
    }

}[/mw_shl_code]

我用这个代码可以进去
回复

使用道具 举报

7

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
137
金钱
137
注册时间
2018-8-29
在线时间
17 小时
 楼主| 发表于 2018-9-27 14:38:13 | 显示全部楼层
HXYDJ 发表于 2018-9-27 14:24
[mw_shl_code=c,true]#include "exti.h"
#include "key.h"
#include "delay.h"

配置过程大致都是一样的,我只是把那个AFIO写在了配置gpio的时钟函数里面,而且后来我也试过写在外面,好像也不可以
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-20 05:59

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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