This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
我指的是与 Example_2833xSCI_FFDLB_int.c 的 SCIA-FIFO_TX 中断服务例程相对应的以下代码
_interrupt void sciaTxFifoIsr (void)
{
uint16 i;
for (i=0;i< 8;i++)
{
SciaRegs.SCITXBUF=sdataA[i]; //发送数据
}
for (i=0;i< 8;i++) //递增发送下一个周期的数据
{
sdataA[i]=(sdataA[i]+1)和0x00FF;
}
SciaRegs.SCIFFTX.bit.TXFFINTCLR=1; //清除 SCI 中断标志
PieCtrlRegs.PIEACX.All|=0x100; //发出 PIE ACK
}
当一个中断发生时、8个字节被载入 SCI TX FIFO。 但是、它们是在何时发送的? 在 ISR 循环执行之后、还是在加载时执行? 发送后、每个字是否都从 FIFO 中清除?
为了使中断 再次发生(在标志被清除后)、TXFFST <= TXFFIL。 在 FIFO 中加载8个字后、 TXFFST=8。 但是 、在清除标志或清除标志之前、TXFFST 何时更改为7? 假设在清除中断标志时发送一个字、即 TXFFST=7。 因此、中断再次发生。 我想确保只有在发送全部8个字后、即 TXFFST=0时、才会发生中断。 如何实现这一点?