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.

[参考译文] MSP430FR5994:UART -工作代码,但终端上不打印任何内容

Guru**** 2595805 points
Other Parts Discussed in Thread: MSP430G2553, MSP430FR5994

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/642488/msp430fr5994-uart---working-code-but-nothing-is-printed-on-terminal

部件号:MSP430FR5994
主题中讨论的其他部件:MSP430G2553

大家好,

我当时使用的是MSP430G2553,然后我切换到了FR5994。 为了测试UART通信,我使用了两个代码,其中一个使用轮询,另一个使用用户按钮的中断。 我阅读了MSP430fr5994系列用户指南的相关部分,并对这些代码进行了必要的更改,以便在FR994中测试UART。 代码工作正常,但我无法读取CCS终端上的任何数据。 我花了太多时间来解决问题,但我无法找到解决方案。 这两个代码都添加在下面

如果您能提供帮助,我将很高兴。 谢谢...  

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

//UART测试1 -轮询

#include <MSP430.h>

#define RXD BITS1
#定义TXD BIT0
#define button BIT5

void UART_TX (CHAR * TX_DATA); // TX

void main (void)的函数原型
{
WDTCTL = WDTPW + WDTHOLD; //停止监控狗定时器

//禁用GPIO通电默认高阻抗模式以激活先前配置的端口设置
PM5CTL0 &=~LOCKLPM5;

//时钟设置
CSCTL0_H = CSNKEY >> 8; //解锁CS寄存器
CSCTL1 = DCOFSEL_3 | DCORSEL; //将DCO设置为8MHz
CSCTL2 =拉美_ VLOCLK | SESL_ DCOCLK | SELM_ DCOCLK; // SET ACLK = VLOCLK;MCLK = SMCLK = DCO
CSCTL3 = DIVA__1 | DIVM__1 | DIVM__1; //将所有分频器设置为1

//锁定CS寄存器
CSCTL0_H = 0;

P5DIR &=~按钮; //确保按钮为输入

P1OUT &=~BIT0; //清除WFP 1.0 输出锁存
器P1DIR || BIT0; //对于LED

P5OUT |=按钮; //启用按钮
P5REN ||按钮上的上拉电阻器;

P6SEL1 &=~(BIT0 | BIT1);
P6SEL0 ||(BIT0 | BIT1); // USCI_A3 UART操作

UCA3CTLW0 = UCSWRST; //将eUSCI置于RESET
UCA3CTLW0|= UCSSEL__SMCLK; // CLK = SMCLK
//波特率计算
// 80万/(16*9600)=9600= 52.083
//分数部分= 0.083
//用户指南表21-4:UCBRSx = 0x04
// UCBRFx = int ((UCA3BRW -52)*16)= 1 52.083
=52; // 80万/16/9600
UCA3MCTLW9600 UCA3MCTLW || UCOS16| UCBRF_1 | 0x0400; //
UCA3CTLW0 &=~UCSWRST; //初始化eUSCI

,同时(1) //轮询
{
如果(!((P5IN和按钮)=按钮)//是否按下了按钮?
{
P1OUT ^= BIT0; //为确保代码正常工作-按下按钮时,红色LED将被切换
UART_TX ("Hello World! \r\n"); //如果是,则传输消息
__DELAY周期(200万); //不去退按钮,因此信号不会多次发送
}
}

}

void UART_TX(Char * TX_data) //定义一个函数,接受指向数组
{
无符号int i=0;
While (TX_DATA[I]) //通过数组递增,查找字符串末尾的空指针(0)
{
期间((UCA3STATW & UCBUSY)); //如果线路TX/RX模块正忙于处理数据,请稍候
UCA3TXBUF = TX_DATA[I]; //在UART总线上发送TX_DATA阵列的元素I
I++; //数组地址的增量变量
}
}

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

//UART测试2 -中断
#include<MSP430.h>//

原型
void UARTInit(void);
void TXData(unsigned char c);

void main(void){
WDTCTL = WDTPW + WDTHOLD;//看门狗计时器kapali

//时钟设置
CSCTL0_H = CSOKEY >> 8; //解锁CS寄存器
/CSCTL1 = DCOFSEL_0; //将DCO设置为1MHz
CSCTL1 = DCOFSEL_3 | DCORSEL; //将DCO设置为8MHz
CSCTL2 =拉美_ VLOCLK | SESS__DCOCLK | SELM__DCOCLK;//设置ACLK = VLOCLK;MCLK = SMCLK = DCO
CSCTL3 = DIVA__1 | DIVs__1 | DIVM__1; //将所有分禾器设置为1

//锁定CS寄存器
CSCTL0_H = 0;

//禁用GPIO开机默认高阻抗模式以激活先前配置的端口设置
PM5CTL0 &=~LOCKLPM2;

P1OUT &=~BIT0; //清除WFP 1.0 输出闩锁
P1DIR || BIT0; //表示LED

P5DIR &=~BIT5; //WFP 5.5 输入
P5OUT || BIT5;
P5REN |= BIT5; //启用上拉电阻开启按钮
P5IE |= BIT5; //中断已启用
P5IES |= BIT5; //高/低边缘
P5IFG &=~BIT5; // IFG已清除

UARTINIT ();

__bis_sr_register(GIE);

}


void UART (void){
P6SEL1 &=~(BIT0 | BIT1);
P6SEL0 ||(BIT0 | BIT1); // USI_A3 UART操作

UCA3CTLW0 = UCSWRST; //重置eUSCI
UCA3CTLW0 |= UCSSEL__SMCLK; // CLK = SMCLK
//波特率计算
// 80万/(16*9600)=9600= 52.083
//分数部分= 0.083
//用户指南表21-4:UCBRSx = 0x04
// UCBRFx = int ((52.083 -52)*16)= 1
UCA3BRW = 52; // 80万/16/9600</s>9600
UCA3MCTLW || UCOS16 | UCBRF_1 | 0x0400;
UCA3CTLW0 &=~UCSWRST; //初始化eUSCI

UCA3IE || UCRXIE;
}

void TXData(unsigned char c){
while (!(UCA3IFG和UCTXIFG));
UCA3TXBUF = c;
}//

端口1中断服务例程/**/
#pragma vector=PORT5_vector
__interrupt void Port_5(void){

P1OUT ^= BIT0;
TXData ('M');
__DELAY周期(40万); 禁止多次发送

P5IFG &=~BIT5;
}

*******************************

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    WFP的按钮/LED指示灯的5.5 和WFP的1.0 听起来像一个Launchpad,但根据SLAU678A秒的说法 2.2 4 Launchpad反向信道UART是eUSI_A0 (不是_A3)。

    如何将UCA3 (WFP 6.0)/WFP 6.1 (WFP PIN)连接到电脑? (如果您有一个Launchpad,切换到UCA0可能更容易。)
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,
    非常感谢,我不知道为什么错过了。 我从CCS资源管理器中的UART代码示例中得到了启发,在此之前我没有检查SLAU678A的引脚等。 这是我的错,对不起。 再次感谢,真的很有帮助:)