430不能驱动SIM900A

2019-07-15 15:19发布

我用430的串口接上原子大哥的GPRS模块,数据传送接收好像有问题?我不明白是怎么回事,请原子大哥指点下,
完全是用的串口的写法,以为是写的不对,于是向上位机的串口调试助手上发送,这段程序向串口发送的是AT回车,
不知道这样给GPRS发送是不是格式不对呀,它一点回应也没有,430完全收不到

#include <msp430x14x.h>

typedef unsigned char uchar;
typedef unsigned int uint;

uchar len,Temp[40],txbuf[40];
void InitUart();
void PutString(uchar *ptr);
void sendata(uchar *Sbuf,uchar Slen)
{
  Slen=0;
  Sbuf[0]='A';
  Sbuf[1]='T';
  Sbuf[2]=13;
  Slen+=3;
}
main()
{
  P1DIR=0xFF1OUT=0xff;
  P2DIR=0xff2OUT=0xff;
  P3DIR=0xff3OUT=0xff;
  P4DIR=0xff4OUT=0xff;
  P5DIR=0xff5OUT=0xff;
  P6DIR=0xff6OUT=0xff;
  
  WDTCTL=WDTPW+WDTHOLD;
  BCSCTL1&=~XT2OFF;
  BCSCTL2=SELM_2+SELS;
  do
  {
    IFG1&=~OFIFG;
    for(uchar i=0xff;i>0;i--);
  }while(IFG1&OFIFG);
  
  InitUart();
  sendata(txbuf,len);
  PutString(txbuf);
  while(1)
  {
    IFG1|=URXIFG0;
    if(IFG1&URXIFG0)
    {
      if(len>30)len=0;
      Temp[len++]=RXBUF0;
    }
  }
}
/*
初始化串口,波特率为9600,数据传输8位
*/
void InitUart()
{
  P3SEL|=0x30;
  ME1 |= URXE0+UTXE0;
  UCTL0|=CHAR;
  UTCTL0|=SSEL0;
  UBR00=0x03;
  UBR10=0x00;
  UMCTL0=0x4A;
  UCTL0&=~SWRST;
}
/*
向串口发送数据
*/
void PutString(uchar *ptr)
{
  while(*ptr !='')
  {
    while(!(IFG1&UTXIFG0));
    TXBUF0=*ptr++;
  }
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
16条回答
llc1219
2019-07-16 09:09
怀疑是时钟问题,我将430的MCLK设置为8M,SMCLK设置为1M,串口时钟选择选择SMCLK,波特率19200,就可以正常通信了。最初我串口使用ACLK作为时钟,SIM900就接收不到数据。还有就是试试430单片机AT指令后面加两个

一周热门 更多>