[技术问答] 关于HC32L136J8TA不能进入中断服务函数问题

[复制链接]
2393|7
 楼主| Tanglin7630424 发表于 2020-3-22 23:29 | 显示全部楼层 |阅读模式
使用HC32L136J8TA  用GPIO  PC13设置下降沿中断, 设置代码如下:
void MenuKeyPortInit(void)
{
        stc_gpio_config_t pstcSpiGpioCfg;
       
        pstcSpiGpioCfg.enCtrlMode=GpioAHB;                        //AHB×ÜÏßÇý¶¯Ä£Ê½
       
        pstcSpiGpioCfg.enDir=GpioDirIn;                //ÊäÈëģʽ
       
        pstcSpiGpioCfg.enPuPd=GpioPu;                                //ÉÏÀ­ÊäÈë
       
        Gpio_Init(MenuKeyPort,MenuKeyPin,&pstcSpiGpioCfg);//PC13
       
        Gpio_ClearIrq(MenuKeyPort, MenuKeyPin);
       
        Gpio_EnableIrq(MenuKeyPort, MenuKeyPin, GpioIrqFalling);//ϽµÑØ´¥·¢ÊäÈëÖжÏ
       
        EnableNvic(PORTC_IRQn,IrqLevel3,TRUE);//¿ªÆôPC NVICÖжÏ
}
仿真下可以看到NVIC有打开PC端口中断,优先级有设置最高,全速运行发生中断后就是不能进入中断服务函数,停在了下图位置;
void PORTC_IRQHandler(void)
{
    Gpio_IRQHandler(2);
}

启动文件是使用MDK下安装的, 同样的代码复制在华大驱动样例里面是可以正常进入中断,样例的启动文件复制过来也不能进入中断,在自己建的工程就不能,找了好久没有找到原因;
martinhu 发表于 2020-3-23 13:22 | 显示全部楼层
先看看是不是中断入口函数名字不一样,
然后看看配置里面是不是少一个这个。
214465e7847778ef50.png

评分

参与人数 1威望 +2 收起 理由
Tanglin7630424 + 2 很给力!

查看全部评分

 楼主| Tanglin7630424 发表于 2020-3-23 21:59 | 显示全部楼层
martinhu 发表于 2020-3-23 13:22
先看看是不是中断入口函数名字不一样,
然后看看配置里面是不是少一个这个。
...

是少了这串字符   谢谢谢 !
杨寅辉 发表于 2020-3-25 19:10 | 显示全部楼层
楼上的很细心,一般人很少会注意这里的。这里是什么意思呢?
zhamatu 发表于 2020-3-26 23:11 | 显示全部楼层
那个没加的东西,像是个微库的关键字定义什么的东西,只有定义才能使用吗?
jerow 发表于 2020-3-27 20:07 | 显示全部楼层
zhamatu 发表于 2020-3-26 23:11
那个没加的东西,像是个微库的关键字定义什么的东西,只有定义才能使用吗? ...

感觉像是一个类似#define这样全局宏定义的东西。
zhufy 发表于 2020-6-15 15:55 | 显示全部楼层
martinhu 发表于 2020-3-23 13:22
先看看是不是中断入口函数名字不一样,
然后看看配置里面是不是少一个这个。
...

请问在IAR中遇到同样问题,怎么解决?死活进不了中断函数
martinhu 发表于 2020-6-19 10:36 | 显示全部楼层
zhufy 发表于 2020-6-15 15:55
请问在IAR中遇到同样问题,怎么解决?死活进不了中断函数

1.先看看启动文件的中断入口,和interrupt是不是一样的,
2.老的例程,启动文件的中断入口名字和interrupt.c的名字不一样,然后ddl.c或者dd.h用宏定义了函数名
3,如果你的工程,启动文件和interrupt.c的名字已经一样了,然后再ddl里面又用宏定义名,反而导致中断进不去。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

18

帖子

0

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