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.

TMS570 SCI接收

大家好,
在调SCI正常接收发送时,没有使能中断,按照下面2种代码,都无法接收到串口发的数据,单步调试好像一直等待在sciReceiveByte的while等待,请问哪里有问题或者没有考虑到?谢谢
uint8_t text[5]={0};
/* USER CODE END */

void main(void)
{
/* USER CODE BEGIN (3) */
	sciInit();
	for(;;)
  {
	sciReceive(scilinREG,5,text);
	sciSend(scilinREG, 5, text);
  }
/* USER CODE END */
}
uint8_t text[5]={0};
/* USER CODE END */

void main(void)
{
/* USER CODE BEGIN (3) */
	sciInit();
	for(;;)
  {
	sciReceiveByte(scilinREG);
    if(scilinREG->RD)
	sciSend(scilinREG, 5, text);
  }
/* USER CODE END */
}
  • 你先单纯的调用发送函数,串口的另外一端能收的到数据吗?这样可以确定关于UART的参数设置都没问题。

    然后在主程序里面,单纯的调用接收函数试试,同时可以设置断电,然后产看系统寄存器,特别是接收的缓存寄存器,看看里面有没有数据。

    谢谢

  • Ken,

          单纯的发送是可以的。至于你说单纯的接收,我现在刚接触不知道如何操作观察寄存器的值。就我的两个程序而言,有没有问题呢?我用串口调试助手给单片机发一个指令后,SCIFLR中RXRDY是不是就自动置1了呢1 Read: New data is ready to be read from SCIRD

      谢谢!

  • ray,

      如果你的UART端口信息设置正确的话,当串口助手发送一个字节的数据给单片机时,单片机的接收缓存里面会有数据,同时会置位接收ready的状态标志位,这个时候,你就可以通过查询这个标志位来将接收缓存的数据拷贝到你的RAM数组里面来。

     在CCS里面观察寄存器的方式时,你先设置断点,当程序运行到断点是,可以点击菜单来里面的view-》register来找到每个外设的寄存器值。

    谢谢