请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
部件号:MSP430FR2633 您好,
我是MSP430FR2633设备的新成员。 在我的应用程序中,我需要两个UART,因此我选择了它。
现在,我有一个XBee接口,它带有UART引脚的UCA1端口,并且在9600波特上工作。
从XBee到UART上UC的数据接收完美。但我要从UC发送到Xbee的数据无法实现。 是否有人可以检查我的代码,我是否写的完美?
我还在示波器上,在示波器中看到了我可以看到的Tx和Rx数据。 欢迎提供所有帮助。
INT MAIN (void)
{
WDTCTL = WDTPW | WDTHOLD; //停止看门狗计时器
PM5CTL0 &=~LOCKLPM2; //禁用GPIO开机默认高阻抗模式
//激活1先前配置的端口设置
P2SEL0 |= BIT6 | BIT5; //将2-UART引脚设置为第二个功能
//配置UART
UCA1CTLW0 |= UCSWRST;
UCA1CTLW0 |= UCSSEL__SMCLK; //将ACLK设置为BRCLK
//波特率计算。 已参阅UG 17.3 10
//(1) N=3.2768万/4800=OS16//
(2)4800(2) 6.827 16=0,UCBRx=INT(N)=6
//(4)分次部分= 0.827。 已参阅UG表17-4,UCBRSx=0xEE。
UCA1BR0 = 6; // INT (3.2768万/4800)4800)
UCA1BR1 = 0x00;
UCA1MCTLW = 0x2000 | UCOS16 | UCBRF_8;
UCA1CTLW0 &=~UCSWRST; //初始化eUSCI
UCA1IE |= UCRXIE; //启用USI_A0 RX中断
//__bis_sr_register (GIE); //输入LPM3,中断启用
时间(1)
{
__bis_sr_register (LPM0_bits | GIE); //输入LPM3,中断启用
}
#pragma vector=USI_A1_vector
__interrupt void USI_A1_ISR(void)
{
SWITCH(__偶 数_in_range(UCA1IV,USI_UTT_UCTXCPTIFG))){
案例USI_NONE:中断;
案例USI_UART_UCRXIFG:
{
UART_received_frame();
}
//UCA0IE &=~UCTXIE;
中断;
案例USI_UART_UCTXIFG:
{
Trasnmit_Frame();
}
UCA1IE |= UCRXIE;
中断;
案例USI_UART_UCSTIFG:中断;
案例USI_UART_UCTXCPTIFG:中断;
默认值:break;
}
}
void Trasnmit_Frame()
{
UCA1TXBUF = Send_Data[pointer++];
if (pointer > 18)
{
UCA1IE &=~UCTXIE;
指针=0;
读数= 0;
校验和=0;
}
}