打印
[技术问答]

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

[复制链接]
1635|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 阳仔很无奈 于 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内





使用特权

评论回复
5
阳仔很无奈|  楼主 | 2020-9-11 09:47 | 只看该作者
martinhu 发表于 2020-9-9 18:58
你这个是M120吧,不是所有M0+的芯片都需要自定义中断向量。
因为28是共享中断向量,所以Irq的设置函数就不 ...

好的,谢谢

使用特权

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

本版积分规则

13

主题

49

帖子

0

粉丝