您好,我正在尝试在MSP430G2553午餐板上驱动蓝牙HC-06。 我使用的示例代码如下所示:
运行代码后,我可以通过电话配对蓝牙,但无法接收或传输正确的信号。 无论我通过电话发送什么信件,我都会收到"0xFF",即UCA0RXBUF。 同样,我只能接收"0xFF",无论我在UCA0TXBUF上发送了什么信件。
我已经被绞死了3天了,但是找不到问题所在...
#include <MSP4S.h>
字符串1[8];
字符I;
字符j =0;
内部主(无效)
{
WDTCTL = WDTPW + WDTHOLD; //停止WDT
P1DIR = 0xFF; //所有P1.x输出
P1OUT = 0; //所有P1.x重置
P2DIR = 0xFF; //所有P2.x输出
P2OUT = 0; //所有P2.x重置
P1SEL = BITS1 + BITS2; // WFP 1.1 = RXD,WFP 1.2 = TXD
P1SEL2 = BITS1 + BITS2; // WFP 1.1 = RXD,WFP 1.2 = TXD
UCA0CTL1 || UCSSEL_1; // CLK = ACLK
UCA0BR0 = 0x03; // 32kHz/9600 = 3.41
UCA0BR1 = 0x00; //
UCA0MCTL = UCBRS1 + UCBRS0; //调制UCBRSx = 3
UCA0CTL1 &=~UCSWRST; //**初始化USCI状态机**
IE2 |= UCA0RXIE; //启用USI_A0 RX中断
__bis_sr_register(LPM3_bits + GIE); //输入LPM3,中断已启用
}
// USCI A0/B0传输ISR
#if defined(__TI_Compiler_version__)|| defined(__IAR_SYSTEMS _ICC__)
#pragma vector=USCIAB0TX_vector
__interrupt void USCI0TX_ISR(void)
#Elif已定义(__GMNU__)
void __attribute__((interrupt (USICAB0TX_vector))) USCI0TX_ISR (void)
#否则
错误编译器不受支持!
#endif
{
UCA0TXBUF =字符串1[I++]; // TX下一个字符
如果(i == sizeof string1) // Tx结束?
IE2 &=~UCA0TXIE; //禁用USI_A0 TX中断
}
// USCI A0/B0接收ISR
#if defined(__TI_Compiler_version__)|| defined(__IAR_SYSTEMS _ICC__)
#pragma vector=USCIAB0RX_vector
__interrupt void USCI0RX_ISR(void)
#Elif已定义(__GMNU__)
void __attribute__((interrupt (USICAB0RX_vector))) USCI0RX_ISR (void)
#否则
错误编译器不受支持!
#endif
{
string1[j++]= UCA0RXBUF;
如果(j > sizeof string1 - 1)
{
I = 0;
J = 0;
IE2 |= UCA0TXIE; //启用USI_A0 TX中断
UCA0TXBUF = string1[I++];
}
}