jiangjiayu 发表于 2020-12-5 12:34

请问HC32L136无法进入 外部中断 的问题

本帖最后由 jiangjiayu 于 2020-12-9 18:50 编辑

///< PortX中断服务函数
void PortD_IRQHandler(void)
{
    if( M0P_GPIO->PD_STAT_f.PD04 == 1)
    {                  
      M0P_GPIO->PDOUT_f.PD05 = ~M0P_GPIO->PDOUT_f.PD05;//< LED 取反
      
      M0P_GPIO->PD_ICLR_f.PD04 = 0;
    }
}

void App_UserKeyInit(void)   //配置 PD4 下降沿中断
{   
    ///< 打开GPIO外设时钟门控
    Sysctrl_SetPeripheralGate(SysctrlPeripheralGpio, TRUE);
   
//    M0P_GPIO->PD04_SEL = 0;
//    M0P_GPIO->PDADS_f.PD04 = 0;
//    M0P_GPIO->PD04_SEL = 0;   
    M0P_GPIO->PDDIR_f.PD04 = 1;   //输入
    M0P_GPIO->PDPU_f.PD04 = 1;      //上拉
   
    M0P_GPIO->PDFIE_f.PD04 = 1;   //下降沿中断
//    M0P_GPIO->CTRL2_f.AHB_SEL = GpioAHB;
   
    EnableNvic(PORTD_IRQn, IrqLevel2, TRUE);
}
代码如上所示

PD5为LED正常输出,且能控制LED的亮灭

PD4为外部按键中断,下降沿触发,死活进不了中断。。。。MCU无睡眠,用的是\HC32L13x_SDK\hc32l13x_ddl_Rev1.9.2 Lite\example\gpio\gpio_interrupt例程修改

把外部中断改为PA4就可以进入

请教下代码有不对的地方吗?

硬件确认没问题,开发板为 : HC32LF136x3x-STK-V2.0

下面为main函数
int32_t main(void)
{
    App_UserKeyInit();   
    App_LedInit();      
    while(1)
    {
      ;
    }
}



问题已解决:   上面的外部中断初始化代码没问题,LED灯的控制脚初始化有问题

sylibo 发表于 2020-12-8 09:18

有提问,有结果回馈,非常赞

xuanhuanzi 发表于 2020-12-20 22:39

经验不错。

jcky001 发表于 2020-12-22 11:14


有提问,有结果回馈,非常赞

mintspring 发表于 2020-12-22 14:09

问题解决的不错

jiekou001 发表于 2020-12-22 14:10

这是坐项目呢,还是学习呢

名字是啥样 发表于 2020-12-23 11:02

这种经验真的不错,感谢分享。

木木guainv 发表于 2021-1-12 14:46

哈哈 是的io口的初始化也非常重要

paotangsan 发表于 2021-1-12 15:09

整个工程还有别的功能吗

jiangjiayu 发表于 2021-1-12 19:08

paotangsan 发表于 2021-1-12 15:09
整个工程还有别的功能吗

没有了,就1和IO口外部中断

初始化LED灯时,把外部中断的IO口也初始化为输出了

杨寅辉 发表于 2021-1-15 10:15

jiangjiayu 发表于 2021-1-12 19:08
没有了,就1和IO口外部中断

初始化LED灯时,把外部中断的IO口也初始化为输出了 ...

应该是用到什么,就初始化那个啊,怎么能够全部初始化了呢,外部中断应该配置为输入的吧
页: [1]
查看完整版本: 请问HC32L136无法进入 外部中断 的问题