关于stm32 控制SIM900A的控制心得与体会

引言

再次看到这篇博文的时候已经是三年前了,现在对内容做一点点的补充和重新的排版

 

使用STM32控制SIM900A发送接收短信

 

经历了3天的时间,能够使用stm32进行简单的控sim900a.

在第一天里使用串口助手控制模块sim900a能够发送短信,打电话。sim900a有他自己的指令集。下面描述一下串口助手的使用过程,

  1.  安装串口驱动,如果资料包里有则安装,没有可以安装360驱动大师,安装驱动。
  2.  安装驱动后进行调试,串口232要使用公头的,下面说一下连接,使用杜邦线连接串口的 2.3.5.接口,他们是TX,RX,GND .(顺序不是对应的)。连接模块上,TX->RX。RX->TX,GND->GND.连接后打开串口助手,如果驱动安装成功后,会显示COM口的。选择SIM900A对应的COM口,选择波特率,最大是115200,默认是9600,选择115200,因为程序里是配置的115200.
  3. 对模块供电。5v,电流最好1A以上,我用的是0.16A,有些不稳定。供电后通过串口助手发送AT,如果显示ok,则正常工作。

心得

  以上测试后,整体有了解,然后式样stm32控制。网上例程很多。下面写写调试心得。

  1. 调试我们先建好文件夹,把文件夹命名一看就知道内容是什么。可以描述功能。及时的做好备份。
  2. 调试要灵活的使用LED灯,串口打印,还有在线仿真。可以方便调试与理解。

串口助手链接

https://download.csdn.net/download/Osean_li/12002375

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
好的,以下是使用STM32控制SIM900A发送短信的代码: #include "stm32f10x.h" #include "stdio.h" #define SIM900A_TX_BUFFER_SIZE 128 #define SIM900A_RX_BUFFER_SIZE 128 char SIM900A_TX_Buffer[SIM900A_TX_BUFFER_SIZE]; char SIM900A_RX_Buffer[SIM900A_RX_BUFFER_SIZE]; void SIM900A_SendCommand(char* command); void SIM900A_SendTextMessage(char* phoneNumber, char* message); int main(void) { // 初始化串口 USART_InitTypeDef USART_InitStructure; USART_InitStructure.USART_BaudRate = 960; USART_InitStructure.USART_WordLength = USART_WordLength_8b; USART_InitStructure.USART_StopBits = USART_StopBits_1; USART_InitStructure.USART_Parity = USART_Parity_No; USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; USART_Init(USART1, &USART_InitStructure); USART_Cmd(USART1, ENABLE); // 初始化SIM900A SIM900A_SendCommand("AT+CMGF=1\r\n"); // 设置短信格式为文本模式 SIM900A_SendCommand("AT+CNMI=2,2,,,\r\n"); // 设置接收短信的方式为自动接收 // 发送短信 SIM900A_SendTextMessage("13800138000", "Hello, world!"); while (1) { // 接收串口数据 if (USART_GetFlagStatus(USART1, USART_FLAG_RXNE) == SET) { char ch = USART_ReceiveData(USART1); // 处理接收到的数据 } } } void SIM900A_SendCommand(char* command) { // 发送AT指令 sprintf(SIM900A_TX_Buffer, "%s", command); USART_SendString(USART1, SIM900A_TX_Buffer); // 等待SIM900A返回OK while (1) { SIM900A_RX_Buffer[] = '\'; USART_ReceiveString(USART1, SIM900A_RX_Buffer, SIM900A_RX_BUFFER_SIZE); if (strstr(SIM900A_RX_Buffer, "OK") != NULL) { break; } } } void SIM900A_SendTextMessage(char* phoneNumber, char* message) { // 发送短信 sprintf(SIM900A_TX_Buffer, "AT+CMGS=\"%s\"\r\n", phoneNumber); USART_SendString(USART1, SIM900A_TX_Buffer); USART_SendString(USART1, message); USART_SendData(USART1, x1A); // 发送Ctrl+Z结束短信 // 等待SIM900A返回OK while (1) { SIM900A_RX_Buffer[] = '\'; USART_ReceiveString(USART1, SIM900A_RX_Buffer, SIM900A_RX_BUFFER_SIZE); if (strstr(SIM900A_RX_Buffer, "OK") != NULL) { break; } } }
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值