打印

HC32L110C6UA端口中断问题

[复制链接]
1341|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lynliiiiii|  楼主 | 2021-1-4 18:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
华大HC32L110C6UA芯片配置P03端口输入下降沿中断,一旦触发中断就会一直进入端口中断,有对M0P_GPIO->P3ICLR写入0操作,并读取M0P_GPIO->P3ICLR和M0P_GPIO->P0STAT_f 寄存器发现值并没有变化。不知道是有哪里没有设置好,各位大神帮忙看看!如下是程序过程:
void Gpio_IRQHandler(uint8_t u8Param){
        uint32_t read_stat=0;
        switch(u8Param)
        {
                case 0:
                {
                }
                break;
                case 1:
                {
                       
                }
                break;
                case 2:
                {
                       
                }
                break;
                case 3:
                {       
                }
                break;
                default:;
                break;      
        }
        *((uint32_t *)((uint32_t)&M0P_GPIO->P3ICLR + u8Param * 0x40)) = 0;
        read_stat=*((uint32_t *)((uint32_t)&M0P_GPIO->P3ICLR + u8Param * 0x40));
        read_stat=*((uint32_t *)((uint32_t)&M0P_GPIO->P0STAT_f + u8Param * 0x40));
}

int32_t main(void)
{
        Gpio_InitIOExt(0, 3, GpioDirIn, FALSE, FALSE, FALSE, FALSE);
        Gpio_ClearIrq(0, 3);
        //上升沿
            Gpio_EnableIrq(0, 3, GpioIrqFalling);
            EnableNvic(PORT0_IRQn, DDL_IRQ_LEVEL_DEFAULT, TRUE);
        while(1)
        {
        }
}


使用特权

评论回复
沙发
lynliiiiii|  楼主 | 2021-1-4 18:13 | 只看该作者
是寄存器写错,请忽略此问题。

使用特权

评论回复
板凳
martinhu| | 2021-1-4 18:32 | 只看该作者
       *((uint32_t *)((uint32_t)&M0P_GPIO->P3ICLR + u8Param * 0x40)) = 0;
        read_stat=*((uint32_t *)((uint32_t)&M0P_GPIO->P3ICLR + u8Param * 0x40));
        read_stat=*((uint32_t *)((uint32_t)&M0P_GPIO->P0STAT_f + u8Param * 0x40));
这几个操作,在GPIO.c里面有对应库函数,建议不要用上述的方式操作寄存器,很容易写错

使用特权

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

本版积分规则

1

主题

5

帖子

0

粉丝