请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
部件号:MSP-EXP430FR2311 我在设置9600波特率以从MSP430与ZigBee模块进行通信时遇到问题,我正在另一个模块上获取垃圾数据。 我的XBee模块连接到引脚1.6 和1.7 ,3.3V和GND。
关于UCA0MCTL2值应设置为什么的任何帮助,或者可能存在问题的任何其他帮助?
谢谢
#include <MSP40.0> unsigned char RXData =0; unsigned char TXData =1; int main(void){ WDTCTL = WDTPW | WDTHOLD; //停止看门狗计时器 PM5CTL0 &=~LOCKLPM2; //禁用GPIO开机默认高阻抗模式 //以激活先前配置的端口设置 P1DIR || BIT0; P1OUT &=~BIT0; // WFP 1.0 输出过低 //配置UART引脚 P1SEL0 || BIT6 | BIT7; //将2-UART引脚设置为第二个功能 //配置UART UCA0CTLW0 |= UCSWRST; //重置eUSCI UCA0CTLW0 |= UCSSEL__ACLK; //波特率计算 UCA0BR0 = 3; // 3.2768万/9600 =9600 = 3.4.1333万 UCA0MCTLW = 0x06; // 3.4.1333万 - INT (3.4133)= 0.4133 // UCBRSx值=? (不确定) UCA0BR1 = 0; UCA0CTLW0 &=~UCSWRST; //初始化eUSCI UCA0IE |= UCRXIE; //启用USI_A0 RX中断 同时(1) { while (!(UCA0IFG和UCTXIFG)); UCA0TXBUF = TXData; //将数据加载到缓冲区 __bis_sr_register(LPM0_bits|GIE); //输入LPM0 __no_operation(); //用于调试器 } } #if defined(__TI_Compiler_version__)|| defined(__IAR_systems_icc__) #pragma vector=USI_A0_vector __interrupt void USI_A0_ISR(void) #Elif defined(__GNUC__) void __attribute__((interrupt (UA0_void_SCI_vector)) UISI_vector)) UA0_else不 支持错误#else #endif { Switch(__偶 数_in_range(UCA0IV,USI_UART_UCTXCPTIFG)) { 案例USI_NONE:中断; 案例USI_UART_UCRXIFG: UCA0IFG &=~ UCRXIFG; //清除中断 RXData = UCA0RXBUF; //清除缓冲区 IF (RXData!= TXData) //检查值 { P1OUT |= BIT0; //如果错误,打开WFP 1.0 同时(1); //陷阱CPU } TXData++; //增量数据字节 __BIC_SR_REGISTER_ON_EXIT (LPM0_bits);//在RETI上退出LPM0 中断; 案例USI_UART_UCTXIFG:中断; 案例USI_UART_UCSTIFG:中断; 案例USI_UART_UCTXCPTIFG:中断; } }