工具与软件:
您好!
我有一个程序,运行了几天后,无法通过 Scia 接收数据。 我正在使用 C2000 LaunchPad XL 开发板、其中的编程器部分包含一些 LED、当连接到 SCI 的 UART 处于活动状态时这些 LED 会闪烁。 我还将程序配置为在通过 SCI 接收数据时使 LED 闪烁。 发生此错误时、我向器件发送数据、观察编程器 UART RX LED 是否闪烁、但程序无法通过 SCI 接收数据。
当器件处于此状态时、我已将调试器连接到"仅连接"模式、并观察到以下情况:
请注意、SCICCR SCICTL1 SCIHBAUD 和 SCILBAUD 均为零。
在 CCS 中点击 Resume (F8)后、程序将运行并能够正常通信。 暂停程序并观察 SCI 寄存器:
相关代码段粘贴如下:
```μ A
静态 void sci_init (void){
断言(SYSCTL_getClock (DEVICE_OSCSRC_FREQ)=DEVICE_SYSCLK_FREQ);
断言(SYSCTL_getLowSpeedClock (DEVICE_OSCSRC_FREQ)== DEVICE_LSPCLK_FREQ);
GPIO_setMasterCore (Board_GPIO_PIN_SCITXDA、GPIO_CORE_CPU1);
GPIO_setPinConfig (BOARD_GPIO_CFG_SCITXDA);
GPIO_setDirectionMode (BOARD_GPIO_PIN_SCITXDA、GPIO_DIR_MODE_OUT);
GPIO_setPadConfig (BOARD_GPIO_PIN_SCITXDA、GPIO_PIN_TYPE_STD);
GPIO_setQualificationMode (Board_GPIO_PIN_SCITXDA、GPIO_QUAL_ASYNC);
GPIO_setMasterCore (Board_GPIO_PIN_SCIRXDA、GPIO_CORE_CPU1);
GPIO_setPinConfig (BOARD_GPIO_CFG_SCIRXDA);
GPIO_setDirectionMode (BOARD_GPIO_PIN_SCIRXDA、GPIO_DIR_MODE_IN);
GPIO_setPadConfig (BOARD_GPIO_PIN_SCIRXDA、GPIO_PIN_TYPE_STD);
GPIO_setQualificationMode (Board_GPIO_PIN_SCIRXDA、GPIO_QUAL_ASYNC);
SCI_performSoftwareReset (SCIA_BASE);
SCI_setConfig (SCIA_BASE、LSPCLK_FREQ、115200、(SCI_CONFIG_WLEN_8 |)
SCI_CONFIG_STOP_ONE |
SCI_CONFIG_PAR_NONE));
SCI_resetChannels (SCIA_BASE);
SCI_resetRxFIFO (SCIA_BASE);
SCI_resetTxFIFO (SCIA_BASE);
SCI_clearInterruptStatus (SCIA_BASE、SCI_INT_TXFF | SCI_INT_RXFF);
SCI_enableFIFO (SCIA_BASE);
SCI_enableModule (SCIA_BASE);
SCI_performSoftwareReset (SCIA_BASE);
}
void main (void)
{
sys_init();
device_initGPIO();
Interrupt_initModule();
interrupt_initVectorTable();
interrupt_register (INT_TIMER0、&cpuTimer0ISR);
cputimer_init ();
led_init();
SCI_INIT ();
halfbridge_init();
STEPPER_INIT ();
STEPPER_DISABLE ();
INTERRUPT_ENABLE (INT_TIMER0);
EINT;
ERTM;
SCPI_Init (&SCPI_context、
scpi_commands、
&SCPI_interface
scpi_units_def、
SCPI_IDN1、SCPI_IDN2、SCPI_IDN3、SCPI_IDN4、
SCPI_INPUT_BUFFER、SCPI_INPUT_BUFFER_LENGTH
SCPI_ERROR_QUEED_DATA、SCPI_ERROR_QUEED_SIZE);
char *str ="SCPI 交互演示\n";
SCI_writeCharArray (scia_BASE、(uint16_t *) str、strlen (str));
while (1){
if (SCI_getRxFIFOStatus (SCIA_BASE)){
GPIO_togglePin (Board_PIN_LED2);
char c = SCI_readCharNonBlocking (SCIA_BASE);
SCPI_Input (&SCPI_context、&C、1);
}
}
}
size_t SCPI_Write (SCPI_t *上下文、const char * data、size_t len){
(void)上下文;
SCI_writeCharArray (SCIA_BASE、(uint16_t *) data、len);
返回长度;
}
```μ A
我正在使用未修改的 DriverLib #define VERSION_NUMBER 5010000U
如何查找此错误的原因?