想实现串口调试助手回显数据,但是无法回显,麻烦各位大牛帮忙看一下程序哪有问题
时间:10-02
整理:3721RD
点击:
#include "msp430g2553.h"
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
BCSCTL1 = CALBC1_1MHZ; // Set DCO
DCOCTL = CALDCO_1MHZ;
P1SEL = BIT1 + BIT2 ; // P1.1 = RXD, P1.2=TXD
P1SEL2 = BIT1 + BIT2 ; // P1.1 = RXD, P1.2=TXD
UCA0CTL1 |= UCSSEL_2; // SMCLK
UCA0BR0 = 104; // 1MHz 9600
UCA0BR1 = 0; // 1MHz 9600
UCA0MCTL = UCBRS0; // Modulation UCBRSx = 1
UCA0CTL1 &= ~UCSWRST; // **Initialize USCI state machine**
IE2 |= UCA0RXIE; // Enable USCI_A0 RX interrupt
__bis_SR_register(LPM0_bits + GIE); // Enter LPM0, interrupts enabled
}
// Echo back RXed character, confirm TX buffer is ready first
#pragma vector=USCIAB0RX_VECTOR
__interrupt void USCI0RX_ISR(void)
{
while (!(IFG2&UCA0TXIFG)); // 发送中断标志检测,每次发送后都要检测
//直到发送完成,才可发送下个字节的数据
UCA0TXBUF = UCA0RXBUF; // TX -> RXed character
}
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
BCSCTL1 = CALBC1_1MHZ; // Set DCO
DCOCTL = CALDCO_1MHZ;
P1SEL = BIT1 + BIT2 ; // P1.1 = RXD, P1.2=TXD
P1SEL2 = BIT1 + BIT2 ; // P1.1 = RXD, P1.2=TXD
UCA0CTL1 |= UCSSEL_2; // SMCLK
UCA0BR0 = 104; // 1MHz 9600
UCA0BR1 = 0; // 1MHz 9600
UCA0MCTL = UCBRS0; // Modulation UCBRSx = 1
UCA0CTL1 &= ~UCSWRST; // **Initialize USCI state machine**
IE2 |= UCA0RXIE; // Enable USCI_A0 RX interrupt
__bis_SR_register(LPM0_bits + GIE); // Enter LPM0, interrupts enabled
}
// Echo back RXed character, confirm TX buffer is ready first
#pragma vector=USCIAB0RX_VECTOR
__interrupt void USCI0RX_ISR(void)
{
while (!(IFG2&UCA0TXIFG)); // 发送中断标志检测,每次发送后都要检测
//直到发送完成,才可发送下个字节的数据
UCA0TXBUF = UCA0RXBUF; // TX -> RXed character
}
没用过430芯片,不过看你的程序,好像没有对接收数据的判断,即使你的打算是接收到数据再发送返回,那也应该要判断有没有接收到数据吧。
我的是当接收到数据后,通过产生的接受中断来发送数据的
那可以先调试发送数据部分,随意发送到串口调试助手,看是调试助手否能正确接收到。可以测试波特率等参数。
等发送正确了,如果还不能回传,那就是接收的问题了
我用官方的例程跑 ,能把程序烧进去,但是串口调试助手还是不能回显
串口通讯有多个参数,如波特率,数据位,有无校验等等,必须设置正确,串口调试助手最好设置成十六进制发送和接收
参数都是按照串口调试助手上的来的,结果还是不行
好像单独发数据给串口调试助手,助手也收不到任何数据
还是先测试单片机发送数据到串口调试助手,这样可以测试参数是否正确,包括程序里的波特率设置等
那就要查程序,参数设置,还有硬件的连接线,以及电路接线等是否有错误了,最好能上电路图和连线图
程序我后来使用的ti官方例程,我为了防止上电后的默认参数和串口调试助手不一致,我又在程序中重新设置了一下参数,保证波特率9600,无奇偶校验位,一位停止位,8位数据位。程序也能正常的烧进去,但就是不能调试。
我是通过usb直接连接的板子