您好,
我正在尝试使用UART将字符'r'(0x72)从一个msp430f5529启动板发送到另一个启动板。 另一个启动板检测到'r'(0x72)并在p 1.0 亮起LED。
这是我对两个启动板的守则。
发射器
#include <MSP4S.h>
内部主(无效)
{
WDTCTL = WDTPW + WDTHOLD;//停止WDT
P3SEL || BIT3+BIT4;// WFP 3.3 4 = USI_A0 TXD/RXD
UCA0CTL1 |= UCSWRST;//**将状态机置于复位**
UCA0CTL1 |= UCSSEL_2;// SMCLK
UCA0BR0 = 9;// 1MHz 11.52万 (请参阅用户指南)
UCA0BR1 = 0;// 1MHz 11.52万
UCA0MCTL || UCBRS_1 + UCBRF_0;//调制UCBRSx=1,UCBRFx=0
UCA0CTL1 &=~UCSWRST;//**初始化USCI状态机**
//UCA0IE |= UCRXIE;//启用USI_A0 RX中断
而(1){
(UCA0STAT和UCBUSY);
UCA0TXBUF = 0x72;
}
__no_operation();//用于Debugge
}
接收器
#include <MSP4S.h>
无符号int k;
内部主(无效)
{
WDTCTL = WDTPW + WDTHOLD;//停止WDT
P3SEL || BIT3+BIT4;// WFP 3.3 4 = USI_A0 TXD/RXD
WDTCTL = WDTPW+WDTHOLD;//停止WDT
P1DIR || BIT0;// WFP 1.0 设置为输出
P1OUT &=~BIT0;
UCA0CTL1 |= UCSWRST;//**将状态机置于复位**
UCA0CTL1 |= UCSSEL_2;// SMCLK
UCA0BR0 = 9;// 1MHz 11.52万 (请参阅用户指南)
UCA0BR1 = 0;// 1MHz 11.52万
UCA0MCTL || UCBRS_1 + UCBRF_0;//调制UCBRSx=1,UCBRFx=0
UCA0CTL1 &=~UCSWRST;//**初始化USCI状态机**
UCA0IE |= UCRXIE;//启用USI_A0 RX中断
__bis_sr_register(LPM0_bits + GIE);//输入LPM0,中断已启用
__no_operation();//用于调试器
}
//回显RXed字符,请先确认TX缓冲区已就绪
#if defined(__TI_Compiler_version__)|| defined(__IAR_SYSTEMS _ICC__)
#pragma vector=USI_A0_vector
__interrupt void USI_A0_ISR(void)
#Elif已定义(__GMNU__)
void __attribute__((interrupt (USI_A0_vector))) USI_A0_ISR (void)
#否则
错误编译器不受支持!
#endif
{
Switch(__偶 数_in_range(UCA0IV,4))
{
案例0:中断;//矢量0 -无中断
案例2:
K = UCA0RXBUF;// TX -> RXed字符
如果(k == 0x72)
P1OUT |= BIT0;
中断;
案例4:中断;//矢量4 - TXIFG
默认值:中断;
}
}
我将德克萨斯州的WFP 3.3 ,WFP的3.4 和 WFP的3.4 ,WFP的3.3 的Rx launchpad连接起来。 我正在UCA0RXBUF中接收垃圾值,指示灯未亮起。
我在准则中犯了什么错误?