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/MSP430I2041:msp430i2041

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/761048/ccs-msp430i2041-msp430i2041

器件型号:MSP430I2041

工具/软件:Code Composer Studio

尊敬的所有人:

我想通过 UART 发送字符串、问题是它只发送第一个字符、我非常希望在这方面能提供一些帮助。 此代码附在下面:

//初始化位:

//UART
P1SEL0 |= BIT2 | BIT3; // P1.2/3 eUSCI_A 函数
P1SEL1 &=~(BIT2 | BIT3);

UCA0CTL1 |= UCSWRST; //保持 eUSCI 处于复位状态
UCA0CTL1 |= UCSSEL_2; // SMCLK
UCA0BR0 = 0xAA; // 9600波特
UCA0BR1=0x06;
UCA0MCTLW = 0xD600; // 16.384MHz/9600 = 1706.6667 (请参阅 UG)
UCA0CTL1 &=~UCSWRST; //从复位中释放
UCA0IE |= UCRXIE; //启用 RX 中断

//将 DCO 设置为使用内部电阻器。 DCO 将处于16.384MHz
CS_setupDCO (CS_internal_voltageR);
CS_initClockSignal (CS_SMCLK、CS_clock_divider);

//中断例程

void USCI_A0_ISR (void)
{
switch (__evo_in_range (UCA0IV、USCI_UART_UCTXCPTIFG)){
USCI_NONE 案例:中断;
USCI_UART_UCRXIFG 案例:
U = 0;
while (!(UCA0IFG&UCTXIFG));// USCI_A0 TX 缓冲器准备就绪?
{
sprintf (randomstr、"%d"、p_results_2);//将 p_result_2转换为字符串
while (Randrstr[u]!='\0')
{
UCA0TXBUF =随机数[u];

U++;
//UCA0TXBUF = 0x0a;
}
UCA0TXBUF = 0x0a;

UCA0TXBUF = 0x0d;
U = 0;
}
中断;
案例 USCI_UART_UCTXIFG:中断;
案例 USCI_UART_UCSTTIFG:中断;
案例 USCI_UART_UCTXCPTIFG:中断;
默认值:break;
}
}

此致

Neal

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

    嗨、Subhronil、

    我想您在尝试写入字符串其余部分之前、不会再次等待 TX 缓冲区清除。  这个 while 循环应该只写入1个字符、然后等待 TX 缓冲区准备就绪、然后再写入更多内容。   

    while (Randrstr[u]!='\0')
    {
    UCA0TXBUF =随机数[u];
    
    U++;
    //UCA0TXBUF = 0x0a;
    } 

    此致、

    JD

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

    尊敬的 JD:

    非常感谢。 添加复选标记;"while (UCA0STATW 和 UCBUSY)"执行该操作

    while (currentstr[u]!='\0')
    {
    UCA0TXBUF = currentstr[u];
    while (UCA0STATW&UCBUSY);
    U++;
    //UCA0TXBUF = 0x0a;
    } 
    此致

    Neal