430+GTM900C

2019-07-15 16:32发布

有没有人有GTM900C发收短信的430G2553的代码啊。急求啊
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
youlikai
1楼-- · 2019-07-15 17:15
我有,而且我之前做过,有些经验可以给你,比如每条AT指令之间最好有几秒的间隔发送
1083934282
2楼-- · 2019-07-15 19:54
有代码吗???
1083934282
3楼-- · 2019-07-15 21:54
youlikai 发表于 2014-11-13 21:44
我有,而且我之前做过,有些经验可以给你,比如每条AT指令之间最好有几秒的间隔发送
...

可以给你QQ我吗??想你学习学习,我的出错了这是我的代码,帮帮我吧

#include<msp430.h>

#include"BoardConfig.h"
char star[]="AT&F ";
char AT[]="AT ";                                //握手信号//3Chars
char ATCMGF[]="AT+CMGF=1 ";                    //text格式//10Chars
char ATCMGS[]="AT+CMGS=1392*****0 ";
char Data[]="HHH";
//unsigned char ATCSCA[]="AT+CSCA="+8613010980500" ";
void GsmSend(void);
void UART0_Init (void);
void DelayNS (unsigned int dly);
void uart1Puts( char *s);
void uart1Putc( char c);
unsigned char len;
char  gsmRxBuf[88] = {0};               //接收GSM模块数据
char  gsmRxLen = 0;                    //接收数据长度


//主程序
void main()
{
  WDTCTL = WDTPW +WDTHOLD;
  UART0_Init();
//  DelayNS(2000);//等待
  P1DIR&=~BIT3;
  P1REN=BIT3;
  P1OUT=BIT3;
  P1DIR|=BIT0;
  while(1)
  {
        if((BIT3 & P1IN)==0)
        {
                delay_ms(25);
                if((BIT3 & P1IN)==0)
                {
                        P1OUT^=BIT0;
                        GsmSend();
                        P1OUT^=BIT0;
                        while(!(BIT3 & P1IN));
                }
        }
  }
}
//uart初始化
void UART0_Init(void)
{
        if (CALBC1_1MHZ==0xFF)                                        // If calibration constant erased
          {
            while(1);                               // do not load, trap CPU!!
          }
          DCOCTL = 0;                               // Select lowest DCOx and MODx settings
          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 |= UCSWRST;
          UCA0CTL1 |= UCSSEL_2;                     // SMCLK
          UCA0BR0 = 109;                            // 1MHz 9600
          UCA0BR1 = 0;                              // 1MHz 9600
//          UCA0MCTL = UCBRS0;                        // Modulation UCBRSx = 1
          UCA0MCTL = 0x10;
          UCA0CTL1 &= ~UCSWRST;                     // **Initialize USCI state machine**
          IE2 |= UCA0RXIE;                          // Enable USCI_A0 RX interrupt
          __bis_SR_register(GIE);       //  interrupts enabled
        }

//时间延迟
void DelayNS(unsigned int dly)
{
  unsigned int i;
  for(;dly>0;dly--)
    for(i=0;i<2000;i++);
}
void GsmSend(void)
{
//        uart1Puts(star);
//        delay_ms(2000);
        uart1Puts(AT);
        delay_ms(2000);
//        __delay_cycles(1000000);
        uart1Puts(ATCMGF);
//        __delay_cycles(1000000);
        delay_ms(2000);
    uart1Puts(ATCMGS);
        delay_ms(2000);
//    __delay_cycles(1000000);
        uart1Puts(Data);
        delay_ms(2000);
//        __delay_cycles(10000000);
        while(!(IFG2 & UCA0TXIFG));                 //发送符
        UCA0TXBUF=0x1a;
//        while(!(IFG2 & UCA0TXIFG));
        delay_ms(2000);
}
void uart1Puts( char *s)
{
    while (*s != '')
    {
        uart1Putc(*(s++));
    }
}
void uart1Putc( char c)
{
        while(!(IFG2 & UCA0TXIFG));
        UCA0TXBUF= c;
}
/****************************************************************************************
***功能:UART1接收中断服务函数
***参数:无
***返回:无
***说明:如果主函数里一直采集,则串口发送不能顺利读取,因此只在中断函数里采
*****************************************************************************************/
#pragma vector=USCIAB0RX_VECTOR
__interrupt void  USCI0RX_ISR(void)
{
        while (!(IFG2&UCA0TXIFG));
  gsmRxBuf[gsmRxLen++] = UCA0RXBUF;
  if (gsmRxLen > sizeof gsmRxBuf -1 )
  {

          if (gsmRxBuf[0] == 'O' && gsmRxBuf[1] == 'K' )   //如果返回数据为OK,不操作
                 {
                         gsmRxLen = 0;                              //字节长度清空为0
                 }
          if (gsmRxBuf[69] == 'o' &&gsmRxBuf[70] == 'f' &&gsmRxBuf[71] == 'f' && gsmRxBuf[72] == '1' )   //如果返回数据为OK,不操作
                 {

                 P1OUT &=~BIT3;
                 for(len=0;len<gsmRxLen;len++)
                 {
                         gsmRxBuf[len]=0;
                 }
                  gsmRxLen = 0;                              //字节长度清空为0
                 }
  }
}



457394022
4楼-- · 2019-07-15 22:02
每回复一次都有E币吗
dccfhy212
5楼-- · 2019-07-16 02:47
 精彩回答 2  元偷偷看……
dccfhy212
6楼-- · 2019-07-16 08:37
学习                                       

一周热门 更多>