Uint8 DebugHeader = 0; //定义一个Uint8类型的变量DebugHeader,并初始化为0 __interrupt void Lina_Level0_ISR(void) //定义一个中断函数Lina_Level0_ISR { LinL0IntVect = LinaRegs.SCIINTVECT0.all; //将LinaRegs.SCIINTVECT0的值赋给LinL0IntVect,用于读取并清除中断向量

if(LinL0IntVect == 11) //如果LinL0IntVect等于11,表示是RXINT中断
{
    if(0 == DebugHeader) //如果DebugHeader等于0
    {
        rdataA[0] = LinaRegs.LINRD0.bit.RD0; //将LinaRegs.LINRD0.bit.RD0的值赋给rdataA[0]

        if(0xA5 == rdataA[0]) //如果rdataA[0]等于0xA5
        {
            DebugHeader = 1; //将DebugHeader赋值为1
            LinARevCnt = 0; //将LinARevCnt赋值为0
            LinaCommStatus = 0; //将LinaCommStatus赋值为0
        }

        if(0xA6 == rdataA[0]) //如果rdataA[0]等于0xA6
        {
            DebugHeader = 2; //将DebugHeader赋值为2
            LinARevCnt = 0; //将LinARevCnt赋值为0
            LinASendCnt = 0; //将LinASendCnt赋值为0
            LinaCommStatus = 0; //将LinaCommStatus赋值为0
        }
    }
    else //如果DebugHeader不等于0
    {
        if(1 == DebugHeader) //如果DebugHeader等于1
        {
            DebugData[LinARevCnt] = LinaRegs.LINRD0.bit.RD0; //将LinaRegs.LINRD0.bit.RD0的值赋给DebugData[LinARevCnt]
            LinARevCnt++; //LinARevCnt自增1

            if(LinSentDataNum == LinARevCnt) //如果LinSentDataNum等于LinARevCnt
            {
                LinaCommStatus = 1; //将LinaCommStatus赋值为1
                LinARevCnt = 0; //将LinARevCnt赋值为0
                LinASendCnt = 0; //将LinASendCnt赋值为0
            }
        }
    }
}

PieCtrlRegs.PIEACK.all = PIEACK_GROUP9; //向PIEACK寄存器的PIEACK_GROUP9位写入1,用于确认中断,并能够接收更多的中断
Uint8 DebugHeader = 0;__interrupt void Lina_Level0_ISRvoid Uint8 i; Read-clear the interrupt vector LinL0IntVect = LinaRegsSCIINTVECT0all; RXINT向量值为11 ; 关于中断向量P26 见表格 Table 3 SCIB

原文地址: https://www.cveoy.top/t/topic/hy8a 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录