打印

MSP430调试AT指令出错,附原代码及错误图片

[复制链接]
1201|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 曳影zsg 于 2016-5-25 01:15 编辑

C:\Users\zhangsg\Desktop\1
最近调试ES8266WiFi模块,发送AT指令,编译时报错Error[Pe018]: expected a ")" ,错误的那一行是“Uart1Sends("AT+CWJAP="Tenda_316","14911123649"\n");”,注释掉这行程序后就没问题,请问这是怎么回事?该怎么改?O(∩_∩)O谢谢
  

原代码我贴在下面:
#include<msp430x14x.h>
typedef unsigned char uchar;
typedef unsigned int  uint;
/*********************时钟初始化***************/

             void Int_clk()
              {
                  uchar i;
                  BCSCTL1 &= ~XT2OFF;     //打开XT振荡器
                  BCSCTL2 |= SELM1 + SELS;   //MCLK=8M ,SMCLK=1M
                  do
                  {
                    IFG1 &= ~OFIFG;    //清除振荡错误标志
                    for(i=0;i<100;i++){
                       //等待延时
                    }   
                  }
                    while((IFG1 & OFIFG) != 0);   //如果标志为1,则继续循环等待
                    IFG1 &= ~OFIFG;
                 }

/*************串口初始化:***************/
              void Init_UART1(void)
            {
                P6DIR |= BIT2;P6OUT |= BIT2;              // 关电平转换
                P3SEL |= 0x30;                            // P3.4,5选择为UART收发端口
                UCTL0 |= SWRST;
                UCTL0 |= CHAR;                            // 8-bit character
                UTCTL0 |= SSEL1;                          // select SMCLK as CLK     (要得到8M)
                UBR00=0X45;    //确定波特率的整数部分  8M/115200=69.44
                UBR10=0X00;
                UMCTL0=0x71;    //  确定波特率的小数部分
                ME1 |= UTXE0 + URXE0;                     // 使能USART0收发
                UCTL0 &= ~SWRST;                          // 初始化UART0状态机
                IE1 |= URXIE0;                            // 使能接收中断
                return;
            }

/**************************************************/
//延时函数大概是1s钟.
void DelaySec(int sec)
{
        uint i,j= 0;
        for(i=0; i<sec; i++)
           for(j=0; j<65535; j++);
}

/*****************串口1 发送字符串************************/
void Uart1Sends(uchar *str)
{
    while(*str != '\0')
      {
            while (!(IFG1 & UTXIFG0));                // TX缓存空闲?
            TXBUF0 = *str++;                       // 发送数据
      }
      while (!(IFG1 & UTXIFG0));
      IFG1|=UTXIFG0;   //中断挂起
}

void AT_WIFI()  
{
    Uart1Sends("AT+RST\n");  //初始化
    DelaySec(3);//延时3秒
    Uart1Sends("AT+CWMODE=3\n");  
    DelaySec(3);//延时3秒
    Uart1Sends("AT+CWJAP="Tenda_316","14911123649"\n");
    DelaySec(3);//延时3秒
}

void main()
{
    WDTCTL = WDTPW + WDTHOLD;
    Int_clk();
    Init_UART1();
    AT_WIFI();
}

相关帖子

沙发
dirtwillfly| | 2016-5-25 08:16 | 只看该作者
Uart1Sends("AT+CWJAP="Tenda_316","14911123649"\n");
字符串内部的引号要用转意字符

使用特权

评论回复
板凳
曳影zsg|  楼主 | 2016-5-25 17:20 | 只看该作者
dirtwillfly 发表于 2016-5-25 08:16
Uart1Sends("AT+CWJAP="Tenda_316","14911123649"\n");
字符串内部的引号要用转意字符

改了,程序不报错了,但还是连不上路由器

使用特权

评论回复
地板
angerbird| | 2016-5-25 20:29 | 只看该作者
Uart1Sends()的函数是怎样定义的?不会是一下发送两个字符串的吧?

使用特权

评论回复
5
dirtwillfly| | 2016-5-25 20:50 | 只看该作者
曳影zsg 发表于 2016-5-25 17:20
改了,程序不报错了,但还是连不上路由器

用软件抓一下数据,看看发送给路由器的字符串

使用特权

评论回复
6
mmbs| | 2016-5-25 21:40 | 只看该作者
你的引号用错了。

使用特权

评论回复
7
mmbs| | 2016-5-25 21:41 | 只看该作者
必须用转义字符,\“

使用特权

评论回复
8
comeon201208| | 2016-5-25 21:54 | 只看该作者
采用uart的发送函数的,其发送的字符串的我看着是有问题的,貌似只能把第一个字符串的发送完成的吧。。。

使用特权

评论回复
9
comeon201208| | 2016-5-25 21:56 | 只看该作者
Uart1Sends("AT+CWJAP="Tenda_316","14911123649"\n")
哦,说错了,这个需要在发送的字符串末尾的加上结束标志符的。

使用特权

评论回复
10
shenmu2012| | 2016-5-25 22:32 | 只看该作者
字符串末尾的在“前的加上\n\t的吧?还是?

使用特权

评论回复
11
尤彼卡| | 2016-5-27 20:40 | 只看该作者
用软件抓一下数据

怎么抓数据

使用特权

评论回复
12
vivilzb1985| | 2016-5-28 09:38 | 只看该作者
这个下边的调试信息的显示什么错误的呢?

使用特权

评论回复
13
Brand2| | 2016-5-30 20:07 | 只看该作者
楼主怎么调的,出来结果了吗

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

24

帖子

0

粉丝