SIM900A高效完整的STM32代码

在STM32项目中使用SIM900A模块遇到数据发送不稳定、卡死和效率低下等问题。通过研究手册和测试,找到解决方案。重点介绍了优化后的代码,强调了内存管理、函数使用细节和防止死机的措施。
摘要由CSDN通过智能技术生成

一、问题

最近使用SIM900A做一个STM32的项目,用的正点原子的代码,单独对demo测试没有问题,但是当集成到整个项目中时,效果就非常不理想,主要问题:

1、后台服务器接收到的数据时而密集,时而分散,即并不是按照代码中的设计来呈现
2、会有卡死的现象
3、效率低,有时候连接上服务器,但就是没有数据,实际上板子已经发送出来数据

介于以上问题,查看了众多的手册(22篇GPRS无线模块SIM900软硬件设计技术资料合集),并进过多次测试,最终运行效果很好:
最终效果

二、代码

1,正点原子的demo代码 (不建议使用)

void Landing_Init(int id,int num,char *jiaoben, u8 *humiture_buff )
{
   
	u8 ch = 0x1A;//结束输入,发送数据
	int i=1000;
	
	if(sim900a_send_cmd("AT", "OK", 500)) return;		//模块有效性检查,无效时候就不进行联网配置
	USART2_RX_STA = 0;
	sim900a_send_cmd("AT+CIPCLOSE=1", "CLOSE OK", 500);	

	sim900a_send_cmd("AT+CGCLASS=\"B\"", "OK", 500);
	USART2_RX_STA = 0;
	sim900a_send_cmd("AT+CGDCONT=1,\"IP\",\"CMNET\"", "OK", 500);
	USART2_RX_STA = 0;
	sim900a_send_cmd("AT+CGATT=1", "OK", 500);
	USART2_RX_STA = 0;		
	sim900a_send_cmd("AT+CIPCSGP=1,\"CMNET\"", "OK", 500);
	USART2_RX_STA = 0;
	sim900a_send_cmd("AT+CLPORT=\"TCP\",\"2002\"", "OK",500);
	USART2_RX_STA = 0;
	if(sim900a_send_cmd("AT+CIPSTART=\"TCP\",\"194.233.101.180\",\"7890\"", "OK", 500)) //服务端不在线时候则重新建立发送请求
	{
   
		sim900a_send_cmd("AT+CIPCLOSE=1", "CLOSE OK", 500);
		return;
	}
	
	USART2_RX_STA = 0
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值