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/MSP430G2553:通过 UART 与 PC 通信 USB 问题- DOM#39;t See Anter

Guru**** 2540720 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/587028/ccs-msp430g2553-communicating-with-pc-via-uart-usb-issue--don-t-see-anything-in-terminal

器件型号:MSP430G2553

工具/软件:Code Composer Studio

您好!

我正在执行代码示例、以打印我在终端(反射)中输入的相同字符。

当我在终端(PuTTY)上按下一个字符时、UCA0RXBUF 获得这个字符、RX 中断运行、UCA0TXBUF 获得 char (然后 UCA0TXIFG 自动置位)。

遗憾的是、字符不会显示在终端中。

我已将 PuTTY 配置为9600、8位、无奇偶校验、一个停止位和无流量控制。

谢谢。

#include 

void main (void)
{
WDTCTL = WDTPW+WDTHOLD;//停止看门狗

//配置时钟-
IF (CALBC1_1MHz=0xFF)//如果校准常数已擦除
while (1);//不加载,陷阱 CPU

DCOCTL=0;//选择最低 DCOx 和 MODx =0xFF=1MHZ;//



设置 BCC1M=6

~+ BCC1M|/设置 DCO+1M1- 0 + BCC1M|/ BCC1M1- 0 + BCC1M1-+ D0;/设置 BCC1M1-+ BCC1M1-+ BCC1M1-+ D0 + BCC1M1-+ D0 + BCC1M1-+ DCMP1M1-+ DCMP0;/ BCC1M1-//P1.0 + P1.6 OFF

//为 P1.1 & P1.2 P1SEL|=BIT1
+ BIT2设置 UART 功能;//P1.1 UCA0RXD 输入
P2SEL|=BIT1 + BIT2;//P1.2 UCA0TXD 输出

//配置 UART (USCI_调 制)- UCA0RST=UCA104+
UCAST1

;//从
数据表中选择 UCA0R0 = UCA0R1+ UCA104+ UCA0R0;// UCA0RST= UCA0R1+ UCA104= UCA104= UCA0R1+ UCA0R1+ UCA0RST+ UCA0R1+ UCA0RST+ UCA0R1+ UCA104= UCA104= UCA0RST+ UCA0RST+ UCA104= UCA0RST+ UCA104= UCA0RST+ U
~//清除 UCSWRST 以启用 USCI_A0

//-启用中断
IE2|=UCA0RXIE;//启用 RX 中断

_BIS_SR (LPM0_Bits + GIE); //转至 LPM0
}


//---------------
//TX 和 RX 互连
/../../---------------

#pragma vector = USCIAB0RX_Vector
_中断 void ReceiveInterrupt (void)
{
P1OUT ^= BIT6;//点亮 RX
UCA0TXBUF=UCA0RXBUF 上的 P1.6 LED;
}

 

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

    您应该设置 P1SEL2而不是 P2SEL。

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

    我已经对其进行了配置、但这不起作用(结果相同)。

    我注意到、在 IFG2中、UCA0TXIFG 位默认处于开启状态。 还可以吗? 如果是、问题是什么?

    P.S、我已经按照 HW UART (板上的垂直)对 RXD 和 TXD 进行了物理配置。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如果缓冲区是空的并且准备接收字符、TXIFG 就会被置位、因此默认情况下只有当缓冲区处于开启状态才有意义。 如果您可以正确接收字节、那么接下来的步骤就是发送字节应该同样简单、因此问题可能出在您的终端程序上。

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

    我通过在 CCS 中顺畅运行脚本而不是像以前那样分步解决了这个问题。

    您能解释一下为什么在这种模式下它可以工作吗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    默认情况下、在调试器(Tools -> Debugger Options -> MSP43x Debugger Options)中、SMCLK 在仿真暂停时停止、这很可能会阻止 UCA0TXBUF 正确发出字节。

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

    我很难找到它(在"CCS Edit"下没有"Tools"选项卡、在"CCS Debugger Options"下没有"MSP43x Debugger Options")。 你可以帮帮我吗?

    谢谢。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    找到它(我需要开始调试)。
    遗憾的是、当我取消选中 SMCLK Halt 时、我会得到相同的结果(也尝试切换到 SW 断点而不是 HW 断点)。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    设置 TXBUF 后立即单步执行代码、从而干扰程序的操作、这会干扰状态机发送数据的能力、 如果您希望在填充 TXBUF 后进行调试、但仍在您的终端上看到该字节、请等待 UCA0STAT 中的 UCBUSY 位不再置位、然后再访问另一个断点。

    此致、
    Ryan