本帖最后由 topszk 于 2013-12-28 12:26 编辑
用MSP430F149 写了个简单的串口通信,过程很简单,接收到电脑上的串口调试助手发来的数据之后,再通过串口给电脑回复一个固定的数据(一个字节)。发送采用查询的方式,接收采用中断的方式,全部代码如下:
- #include <msp430x14x.h>
- /////////串口发送函数,一次发送一个字节///////
- void send_byte(unsigned char ubyte){
- while(!(IFG1&UTXIFG0));
- TXBUF0=ubyte;
- }
- //////////////////////////////////////////////
- void main(){
- WDTCTL=WDTPW+WDTHOLD; //关闭看门狗
-
- /////////////////////时钟初始化///////////////////////
- BCSCTL1 &= ~ XT2OFF;
- do{
- IFG1 &= ~OFIFG;
- for(unsigned char i=0xFF;i>0;i--);
- }while(IFG1&OFIFG);
- BCSCTL2|=SELS+SELM1;
- //////////////////////////////////////////////////////
-
- ////串口初始化 9600 N 8 1 ACLK 发送采用查询方式,接收采用中断方式//////
- UCTL0 |= SWRST;
- P3SEL=0x30;
- ME1|=UTXE0+URXE0;
- UCTL0|=CHAR;
- UTCTL0|=SSEL0;
- UBR00=0x03;
- UBR10=0x00;
- UMCTL0=0x4A;
- UCTL0 &= ~SWRST;
- IE1|=URXIE0;
- ///////////////////////////////////////////////////////////////////////
-
- while(1){
- _BIS_SR(LPM3_bits+GIE);
- }
-
- }
- #pragma vector=USART0RX_VECTOR
- __interrupt void uart_rx(void){
- send_byte('A');
- }
复制代码
现在遇到的问题是:用串口调试助手,发送一个字符给单片机,可以正常运行,单片机进入中断处理程序,给上位机回复了一个固定的字符 'A',并通过串口调试助手的界面显示出来。但如果用助手发送一个字符串给单片机,那么单片机的工作将不正常了,请老师看截图:
此帖出自
小平头技术问答
所以你试试楼上的方法,先接收完,再返回。
然后检查一下你的波特率 的配置,尤其是调整位
一周热门 更多>