Uint8 DebugHeader = 0;__interrupt void Lina_Level0_ISRvoid Uint8 i; Read-clear the interrupt vector LinL0IntVect = LinaRegsSCIINTVECT0all; RXINT向量值为11 ; 关于中断向量P26 见表格 Table 3 SCIB
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/hy8a 著作权归作者所有。请勿转载和采集!