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.

[参考译文] CCS/MSP430F5528:UART 问题

Guru**** 2535250 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/750888/ccs-msp430f5528-uart-problem

器件型号:MSP430F5528

工具/软件:Code Composer Studio

大家好、我正在尝试通过 UART 从其他电路板获取数据。

但是、问题是我只得到字符串的最后一个字符

(例如、如果我发送"12345"、我始终只能得到5个)

请有人帮助解决此问题吗?

//UART 配置
P3SEL |= BIT3+BIT4;// P3.3、4 = USCI_A0 TXD/RXD
UCA0CTL1 |= UCSWRST;//**将状态机置于复位状态**
UCA0CTL1 |= UCSSEL_2;// CLK = SMCLK
UCA0BR0 = UCB072MHz

;// UCA012B0R1MHZ 用户指南;// UCA012B0R1MHZ + UCA0MHZ (请参阅 UCA0R0) //调制 UCBRSx=1、UCBRFx=0
UCA0CTL1 &=~UCSWRST;//**初始化 USCI 状态机**
UCA0IE |= UCRXIE;
for (i=5000;i>0;i--);//等待从机初始化

_enable_interrupt



();// USCI_void _ ICS_ IE_ENTRIE_





(i_INTRIE_INTRIE_ENT_UCI_INTRIE_ IE_ IE_INGS_INTRIE_ IE_ IE_ IE_ IE_ IE_ IE_ IE_ IE_ IE_ IE_ IE_ IE_ IE_ IE_ IE_ IE_ IE_ IE_ IE_ IE_ IE_ IE_ IE_ IE_ IE_ IE_ IE_ IE_ IE_ IE_ IE_ IE_ IE_ IE_ IE_ IE_ IE_ IE_ IE_ IE_ IE_ IE_ COMPIAR (IN
#endif
{
switch (__even_in_range (UCA0IV、4))
){
case 0:break;//向量0 -无中断
情形2:
{
for (length=0;length<5;length++)
MST_Data[length]= UCA0RXBUF;

if (MST_Data[0]='S')
UCA4



=
中断;UCA0RXBUG =默认情况4

;UCA0TXIFG}/中断状态4:中断 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Hyusim、

    在论坛上发布代码时、请使用标记的代码格式工具 按钮。 这使得代码易于阅读、并可帮助您在论坛上更快地获得支持。 我修改了您之前的帖子、以反映该工具的使用情况。

    在 ISR 中保存 RXBUF 寄存器中的数据的方式中、您会遇到这样的问题。  每次接收到一个字符时、UCRXIFG 标志都会置1。    《MSP430x5xx 系列用户指南》的第36.3.15.2节介绍了此行为。   这意味着您将在接收到每个字符后输入 ISR、而不是整个字符串。    

    因此、for 循环将覆盖所有以前的字符、并使用最后一个保留的字符。  每次触发 ISR 时、只需保存一个字符并使指针递增。   

    此致、

    JD

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、en-US

    感谢您的指导。

    但是、问题是、即使我发送"ABCD"、它也会进入中断一次、而不是4次。

    您对此有什么建议吗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Hyusim、

    您能否按原样测试代码示例 MSP430F55xxuscia0_UART_01.c?

    如果在 ISR 中放置一个断点、则应在收到第一个字符时单击该断点。 您可能只会点击一次、因为其余字符串将在 MCU 暂停时进入。 如果您可以看到 char、我会再次尝试、只需在 ISR 中添加一个递增计数器、而不添加断点。 运行后、您的计数器应与接收到的字符数匹配、指示 ISR 多次触发。

    另外,您的“等待从属设备”initailazation 延迟可能要很长。 如果您只是接收、我不需要这个延迟、应该立即开始聆听。

    希望这能正常工作!
    JD
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Hyusim、

    您是否能够使示例正常工作并解决了该问题?

    谢谢、
    JD