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,用于确认中断,并能够接收更多的中断

}


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

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