问答

汇集网友智慧,解决技术难题

21ic问答首页 - 华大芯片中断事件请求序号

芯片 RS se top des

华大芯片中断事件请求序号

本帖最后由 阳仔很无奈 于 2020-9-8 13:31 编辑

C:\Users\XuYan\Desktop
针对定时器A,我想使用他的周期匹配中断,但是他的周期匹配中断的序列号16和17已经被我给了另外两个中断用了,现在我再例程中,将原先的序列号16更换为28,却发现无法正常工作了,这时为什么?
回答 +关注 16
1568人浏览 4人回答问题 分享 举报
4 个回答
  • martinhu 发表于 2020-9-9 18:58
    你这个是M120吧,不是所有M0+的芯片都需要自定义中断向量。
    因为28是共享中断向量,所以Irq的设置函数就不 ...

    好的,谢谢
  • 本帖最后由 martinhu 于 2020-9-9 19:04 编辑
    阳仔很无奈 发表于 2020-9-8 18:47
    原先的序列号指的是例程中的序列号,原例程中使用的是16的序列号,更换成17中断可以正常工作,但是换成28 ...

    你这个是M120吧,不是所有M0+的芯片都需要自定义中断向量。
    因为28是共享中断向量,所以Irq的设置函数就不是原来的那个了。首先,宏定义里面的中断向量得改:

    #define TIMERA_UNIT1_OVF_IRQn           (Int028_IRQn)//(Int016_IRQn)//

    然后中断函数也不是自定义的函数名字

    void TimerAOV_IrqHandler()
    {
        u8TimeraUnit1Cnt++;
        if (u8TimeraUnit1Cnt >= 100u)    /* 1s */
        {
            u8TimeraUnit1Cnt = 0u;
            LED_R_TOGGLE();
        }
        TIMERA_ClearFlag(TIMERA_UNIT1, TIMERA_FLAG_OVF);
    }

    然后中断设置使能的时候:不能用原来的配置函数。
        //INTC_IrqRegistration(&stcIrqRegiConf);

        INTC_ShareIrqCmd(stcIrqRegiConf.enIntSrc,Enable);

    以下样例需要放在M120的DDL驱动库   DeviceDriverLibrary\hc32m120_ddl\example\timera内





  • martinhu 发表于 2020-9-8 17:17
    原先的序列号是指什么中断序列号?

    原先的序列号指的是例程中的序列号,原例程中使用的是16的序列号,更换成17中断可以正常工作,但是换成28后无法正常工作。
  • 原先的序列号是指什么中断序列号?

您需要登录后才可以回复 登录 | 注册