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.
你好!在HV_SOLAR_DC_AC_v1.1在这个示例里的SciCommsGui.c有程序用到BRKTD.如下所示:
void GetDataByte(void) // Task 5
{
if (SciaRegs.SCIRXST.bit.RXRDY == 1) // check if a char has been received
{
RxChar = SciaRegs.SCIRXBUF.all;
RcvTaskPointer = &EchoDataByte; // point to next state
//RcvTskPtrShdw = 6; // DEBUG
EchoDataByte();
}
else if (SciaRegs.SCIRXST.bit.BRKDT == 1 )//|| SerialCommsTimer > 2500) //~2 s timeout
{
// If break detected or serialport times out, reset SCI
//--- Needed by some serialports when code is run with an emulator
SciaRegs.SCICCR.all =0x0007; // 1 stop bit, No loopback
// No parity,8 char bits,
// async mode, idle-line protocol
SciaRegs.SCICTL1.all =0x0003; // enable TX, RX, internal SCICLK,
// Disable RX ERR, SLEEP, TXWAKE
SciaRegs.SCICTL2.all =0x0000;
SciaRegs.SCICTL1.all =0x0027; // Relinquish SCI from Reset
asm(" RPT#8 || NOP");
//---
SendTaskPtr = 0; // Init to 1st state
SerialCommsTimer = 0;
CommsOKflg = 0;
RcvTaskPointer = &GetCmdByte; // go back and wait for new CMD
}
else if (SerialCommsTimer > 500) // 1000*1mS = 1 sec timeout
{
CommsOKflg = 0;
RcvTaskPointer = &GetCmdByte; // Abort, go back wait for new CMD
SerialCommsTimer = 0;
}
}
void EchoDataByte(void) // Task 6
{
if(SciaRegs.SCICTL2.bit.TXRDY == 1) // is TXBUF empty ?, i.e. TXRDY = 1
{
SciaRegs.SCITXBUF=RxChar; // if yes, echo back the received char
RcvTaskPointer = &PackWord;
if(CmdPacket[0] == 7)
RcvTaskPointer = &PackLong;
//RcvTskPtrShdw = 7; // DEBUG
}
}
void PackLong(void) // expects LSB first then MSB // Task 7 预计LSB第一MSB然后
{
if(ByteNum>0)
{
RxLong += RxChar<<((3-ByteNum)*8);
ByteNum--;
RcvTaskPointer = &GetDataByte;
//RcvTskPtrShdw = 5; // DEBUG*
GetDataByte();
}
else
{
RxLong += RxChar;
ByteNum=3;
//CmdPacket[2] = RxWord; // store data in packet
RcvTaskPointer = &CmdInterpreter;
//RcvTskPtrShdw = 8; // DEBUG
TaskDoneFlag = 0; // indicate new task underway 表明新的任务正在进行中
}
}
在这里的BRKTD是表示当通讯异常时如帧错误时复位SCI?还是其他什么作用。我就是想了解一下这个BRKTD的应用场合。谢谢!