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.

有关5438A的COM0 RX错误

Other Parts Discussed in Thread: MSP430F5438A

用MSP430F5438A,MCLK和SMCLK都跑到25M,COM0配成115200BPS。但是发现COM0发送时,PC机接收的完全正确,但是PC发送时,MCU收到的却是错误的。用的是TIDriverlib 1.25的代码配的CLK和UART,代码如下:

     if(STATUS_FAIL == UART_init( __MSP430_BASEADDRESS_USCI_A0__,                                 

UART_CLOCKSOURCE_SMCLK,                                 

UCS_getSMCLK(__MSP430_BASEADDRESS_UCS__),                                 

115200,                                 

UART_NO_PARITY,                                 

 UART_LSB_FIRST,                                 

UART_ONE_STOP_BIT,                                 

UART_MODE,                                 

 UART_OVERSAMPLING_BAUDRATE_GENERATION)

 我如果把SMCLK换成ACLK,波特率降到1200,收发都是没问题的,说明硬件应该没问题。那为什么会这样呢?哪位达人也碰到这种问题?给个提示吧。

  • 非常奇怪。我是基于freertos写的串口程序。发现如果在freertos的task启动前给while(1)下来,接收是没问题的。但是如果启动了task,哪怕我PC只发送一个字节,MCU接收中断里的数据也是错误的。所以基本肯定是freertos影响了我的接收。但是非常奇怪啊,freertos我写的那些个task,没有任何跟串口有关的代码啊?怎么会影响我的接收中断呢?

  • 你好,下面是一些建议:

    1. MCU的晶振是内部还是外部?

    2. 如果使用了RTOS,Timer中断肯定一直在调度任务,所以有可能打断UART接收;

    3. 多个任务都在运行的时候,是不是有多个中断?

    谢谢。

x 出现错误。请重试或与管理员联系。