c - MC9S12上的SCI无法接收数据

标签 c

我已经困惑了好几天了。我只是尝试使用我的 Dragon 12 板(MC9S12)上的 SCI1 发送和接收数据。我已成功将数据传输到电脑,但我似乎无法接收数据。

我板上的 Rx LED 从未亮起。我知道数据已成功发送到开发板,因为我有一根 USB/串行线,当我将数据发送到开发板时,它有一个小 LED 闪烁。

这是我的代码:

void main(void)
{
     set24MHzClock();

     initializeLCD();

     clearDisplay();

     SCI1BDH=0x00;    //48MHz/2=24Mhz, 24Mhz/16= 1.5MHz, 1.5MHz/9600=156
     SCI1BDL=156;     //baud rate

     SCI1CR1 = 0x00;

     SCI1CR2 = 0x0C;

     for( ; ; )
     {
          if(SCI1SR1 & 0x20) //never receives data
          {
               clearDisplay();
               RXdata = SCI1DRL;       

               displayChar(RXdata);

               cl = SCI1SR1;

               displayCString("Rx");
          }

          SerWrite('0'); //this works
          wait500ms(); 
     }
}

我尝试了多种不同的方法...从使中断驱动、分离到不同的函数等一切。我还更改了控制寄存器的所有内容,但仍然没有 Rx led 出现。

最佳答案

我最终通过使用 SCI0 解决了这个问题...完全相同的代码 - 不同的端口和结果。

关于c - MC9S12上的SCI无法接收数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6115359/

相关文章:

c - LDMIA 指令导致损坏的寄存器数据

c - 如何在 Sublime Text 2 中运行一个 c 程序?

在 C 中通过 scanf 复数

C数组地址

c++ - 从 printf 切换到 cout - 复杂格式说明符模式

c - malloc/calloc 分配的 block 的差异

C 约定 - 将 H 文件添加到项目文件

c - c89 中的 fmax 和 fmin 替代方案

c - GTK+ 2.0 C 奇怪的结构和 g_signal_connect_swapped

c - 为什么 ASLR 似乎不起作用