阳仔很无奈 发表于 2020-9-8 13:29

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

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

C:\Users\XuYan\Desktop
针对定时器A,我想使用他的周期匹配中断,但是他的周期匹配中断的序列号16和17已经被我给了另外两个中断用了,现在我再例程中,将原先的序列号16更换为28,却发现无法正常工作了,这时为什么?

martinhu 发表于 2020-9-8 17:17

原先的序列号是指什么中断序列号?

阳仔很无奈 发表于 2020-9-8 18:47

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

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

martinhu 发表于 2020-9-9 18:58

本帖最后由 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内





阳仔很无奈 发表于 2020-9-11 09:47

martinhu 发表于 2020-9-9 18:58
你这个是M120吧,不是所有M0+的芯片都需要自定义中断向量。
因为28是共享中断向量,所以Irq的设置函数就不 ...

好的,谢谢
页: [1]
查看完整版本: 华大芯片中断事件请求序号