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.
大家好、
我正在使用 TMS320F28055微控制器。
我的 UART 通信有问题。
我已将 UART 波特率配置为9600、一切运行良好、RX 缓冲器接收一切、中断也被启用。
如果我通过我的 PC (波特率9600)将数据发送到控制器、那么一切都运行得很好。
例如、一旦我将 PC 的波特率设置为1200并发送几次、控制器的 RX 缓冲区就会崩溃、并且其中有0。
如果我将波特率设置回9600、控制器将必须再次接收所有数据。 但是缓冲区仍然只有0、并且他不再接收任何内容。
是否有人知道如何解决此问题、以便即使以不正确的波特率发送数据、RX 缓冲区也不会崩溃。
感谢你的帮助。
void init_RS232() { SciaRegs.SCICCR.all = 0b00000111; //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 = 0x0003; SciaRegs.SCICTL2.bit.TXINTENA = 0; SciaRegs.SCICTL2.bit.RXBKINTENA = 1; SciaRegs.SCIHBAUD = 0x0000; // 9600 baud @LSPCLK = 15MHz(60 MHz SYSCLK) SciaRegs.SCILBAUD = 0x00C2; SciaRegs.SCICTL1.all = 0x0023; // Relinquish SCI from Reset EALLOW; PieVectTable.SCIRXINTA = &Interrupt_SCIa_parameterizationPORT_Isr; EDIS; PieCtrlRegs.PIECTRL.bit.ENPIE = 1; // Enable the PIE block PieCtrlRegs.PIEIER9.bit.INTx1 = 1; // PIE Group 9, INT1 IER = 0x101; EINT; } void InitSciaGpio() { EALLOW; // // Enable internal pull-up for the selected pins // Pull-ups can be enabled or disabled disabled by the user. // This will enable the pullups for the specified pins. // GpioCtrlRegs.GPAPUD.bit.GPIO28 = 0; // Enable pull-up for GPIO28 (SCIRXDA) // GpioCtrlRegs.GPAPUD.bit.GPIO7 = 0; // Enable pull-up for GPIO7 (SCIRXDA) GpioCtrlRegs.GPAPUD.bit.GPIO29 = 0; // Enable pull-up for GPIO29 (SCITXDA) // GpioCtrlRegs.GPAPUD.bit.GPIO12 = 0; // Enable pull-up for GPIO12 (SCITXDA) // // Set qualification for selected pins to asynch only // Inputs are synchronized to SYSCLKOUT by default. // This will select asynch (no qualification) for the selected pins. // GpioCtrlRegs.GPAQSEL2.bit.GPIO28 = 3; // Asynch input GPIO28 (SCIRXDA) // GpioCtrlRegs.GPAQSEL1.bit.GPIO7 = 3; // Asynch input GPIO7 (SCIRXDA) // // Configure SCI-A pins using GPIO regs // This specifies which of the possible GPIO pins will be SCI functional pins. // GpioCtrlRegs.GPAMUX2.bit.GPIO28 = 1; // Configure GPIO28 for SCIRXDA // GpioCtrlRegs.GPAMUX1.bit.GPIO7 = 2; // Configure GPIO7 for SCIRXDA GpioCtrlRegs.GPAMUX2.bit.GPIO29 = 1; // Configure GPIO29 for SCITXDA // GpioCtrlRegs.GPAMUX1.bit.GPIO12 = 2; // Configure GPIO12 for SCITXDA EDIS; }