sint27 发表于 2015-1-23 17:05
是时候亮出你的代码了,show me the code
还需要别的代码吗?我贴上
/*******************************************************************************
*描 述: 此文件包含操作GSM的所有函数
*GSM 模块:SIM900A
*控制芯片:MSP430F149
*
*******************************************************************************/
#include "include.h"
extern uchar USART1BUFF[];//重新声明一下其他函数中定义的USART1BUFF数组
extern void UART_Clear_BUFF(void);
//外部声明过的函数 0 UART1,1 UART2,str为字符串指针
extern void UART_PutStr(uchar uartx, char *str);
extern void UART_PutChar(uchar uartx, char ch);
extern void DelayNms(unsigned char n);
extern void DelayNs(unsigned char n);
extern void led(int i);
extern void GPIO_OUT(uchar px, uchar data8);
extern void UART_Init(uchar uartx);
char *ATE0="ATE0\r\n\r\n";//清除GSM模块回显
/*******************************************************************************
*SIM900初始化函数
*
*返回值:无
*测试通过时间:2015年1月22日22:58:54
*******************************************************************************/
void SIM900(void)
{
UART_Clear_BUFF();
UART_PutStr(0,"AT\r\n\r\n");
while(strstr((char const*)USART1BUFF,"OK")==NULL)
{
UART_Clear_BUFF();
led(2);
//注意:此处必须为\R\N\R\N!!!
UART_PutStr(0,"AT\r\n\r\n");
}
GPIO_OUT(P2,0Xf7);//点亮一个LED灯,代表握手成功
UART_Clear_BUFF();
UART_PutStr(0,"ATE0\r\n\r\n");
while(strstr((char const*)USART1BUFF,"OK")==NULL)
{
UART_Clear_BUFF();
led(4);
//注意:此处必须为\R\N\R\N!!!
UART_PutStr(0,"ATE0\r\n\r\n");
}
GPIO_OUT(P2,0Xfe);//点亮一个LED灯,代表握手成功
}复制代码
主程序里面,没有什么东西,就是一个单独的SIM900程序。
int main( void )
{
// Stop watchdog timer to prevent time out reset
WDTCTL = WDTPW + WDTHOLD;
uchar i;
WDTCTL = WDTPW + WDTHOLD; //关狗
/*------选择系统主时钟为8MHz-------*/
BCSCTL1 &= ~XT2OFF; //打开XT2高频晶体振荡器
do
{
IFG1 &= ~OFIFG; //清除晶振失败标志
for (i = 0xFF; i > 0; i--); //等待8MHz晶体起振
}
while ((IFG1 & OFIFG)); //晶振失效标志仍然存在?
BCSCTL2 |= SELM_2 + SELS; //MCLK和SMCLK选择高频晶振
//计数时钟选择SMLK=8MHz,1/8分频后为1MHz
TACTL |= TASSEL_2 + ID_3;
GPIO_Init(P2,DIR_OUTPUT); //设置P2为输出模式
UART_Init(0);
//打开全局中断
_EINT();
//while(1);
/******************************
此部分,已调试成功
2015年1月22日22:39:52
while(strstr((char const*)USART1BUFF,"OK")==NULL)
{
//uchar ii;
UART_Clear_BUFF();
led(2);
UART_PutStr(0,"ATE0\r\n\r\n");
}
********************************/
SIM900();
while(1);
}复制代码