单片机驱动GSM模块,遇到了个很棘手的问题!【已解决】

2019-07-28 18:37发布

本帖最后由 512826028 于 2015-1-25 23:06 编辑

单片机是 MSP430F149  
GSM模块是 SIM900A

程序中 单片机单独发送  AT指令,可以得到OK答复,单片机点亮第一个LED灯。

单片机单独发送ATE0指令,也可以得到OK答复,单片机点亮另一个LED灯。

但是,如果让单片机按顺序,先发送AT指令,等到OK后,在发送ATE0指令,就不能继续运行了,第二个LED就一直都点不亮了。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
19条回答
angerbird
1楼-- · 2019-07-30 14:51
需要看下是否真的收到OK字符的吧。
512826028
2楼-- · 2019-07-30 20:10
henryetchou 发表于 2015-1-23 22:13
俺認為您的問題不在硬件問題,而可能再UART1BUF裡的字串函數判斷,如果您想糾錯,
俺有一個有效直捷的方法 ...

谢谢了。 这个strstr()函数是系统库函数,用于在字符串中查找什么含有指定的字符串(即“OK”)。

这个问题现在算是差不多解决了,跟BSL编程器有关,我把编程器从开发板上取下,程序就可以运行了。

让我郁闷的是,偶尔忘了取下编程器,程序有时候也会运行,不过,概率很小。
512826028
3楼-- · 2019-07-31 00:16
 精彩回答 2  元偷偷看……
512826028
4楼-- · 2019-07-31 05:57
guangbiao 发表于 2015-1-24 17:53
while(strstr((char const*)USART1BUFF,"OK")==NULL)
    {
        UART_Clear_BUFF();

这个地方是有些不妥。我已经把用于延时和显示的led程序放到了发送之后,这样就有足够的时间接受应答信号了。
512826028
5楼-- · 2019-07-31 11:56
谢谢各位的帮忙!!!

问题出在BSL编程器上,我的BSL编程器,是我自己用CH340的USB串口改造的。把编程器从开发板上拆掉,程序就可以运行了。

对于上面各位说道的延时问题,我的程序中延时放置的确实不妥,我已将发送语句,移动到了用于延时的led()函数后面了。

唯独让人郁闷的是,有时来回改写程序,有可能会忘记拆掉编程序,程序有的时候,竟然也能运行。不过是小概率事件。


512826028
6楼-- · 2019-07-31 12:06
现在程序时可以运行了,但是还是发布出去短信。问题我想应该出现在通信上。

单片机发送,GSM发送的数据同时发给单片机和串口调试助手,是这个样子。

GSM发回的数据里面有乱码。

一周热门 更多>