STM32学习记录 | 您所在的位置:网站首页 › sim卡最小 › STM32学习记录 |
目录 调试 32控制 硬件连接 百度网盘源码 发短信失败大概率跟你的模块供电有关系,由于GSM模块发射信号功率较大,电脑的USB供电电流较小,板子供电不足问题需要外接充电宝供电。(充电宝比电脑USB电流大) 调试首先用串转USB模块调试。 TEST(UCS2)模式下发送中英文短息,短消息储存至SIM卡中。 AT+CMGF=1 AT+CSCS="UCS2” AT+CSCA? AT+CSMP=17,167,0,25 AT+CMGS="要发送电话号码转UNICON编码" >要发送的内容转UNICON编码 最后以十六进制的方式发送1A。 32控制用stm32控制SIM900A的几个重要函数; 同样的指令编写成函数; u8 sim900a_send_chmessage_zc(u8*number,u8*content) { u8 cmd[100]; sprintf((char*)cmd,"AT+CMGS=\"%s\"",number); if(sim900a_send_cmd((u8 *)"AT+CMGF=1",(u8 *)"OK",100)) return SIM_CMGF_ERR; if(sim900a_send_cmd((u8 *)"AT+CSCS=\"UCS2\"",(u8 *)"OK",100)) return SIM_CSCS_ERR; if(sim900a_send_cmd((u8 *)"AT+CSCA?",(u8 *)"OK",100)) return SIM_CSCA_ERR; if(sim900a_send_cmd((u8 *)"AT+CSMP=17,167,0,25",(u8 *)"OK",100)) return SIM_CSMP_ERR; if(sim900a_send_cmd(cmd,(u8 *)">",100)) return SIM_CMGS_ERR; UART2SendString(content,strlen((char*)content)); //u2_printf("%s",content); if(sim900a_send_cmd((u8 *)0x1A,(u8 *)"+CMGS:",1500)) return SIM_CMGS_SEND_FAIL; return SIM_OK; }发送的代码 u8 sim900a_send_cmd(u8 *cmd,u8 *ack,u16 waittime) { u8 res=0; USART2_RX_STA=0;USART2_RX_REC_ATCOMMAD=1; if((u32)cmdCNDTR!=0); //等待通道7传输完成 USART2->DR=(u32)cmd; }else u2_printf("%s\r\n",cmd);//发送命令 if(ack&&waittime) //需要等待应答 { while(--waittime) //等待倒计时 { delay_ms(10); if(USART2_RX_STA&0X8000)//接收到期待的应答结果 { if(sim900a_check_cmd(ack))break;//得到有效数据 USART2_RX_STA=0; } } if(waittime==0)res=1; } USART2_RX_STA=0;USART2_RX_REC_ATCOMMAD=0; return res; }主函数 while(res) //只需要修改电话号和内容即可 { res=sim900a_send_chmessage_zc((u8*)"电话号码",(u8*)"内容"); } 硬件连接模块RX接PA2 TX接PA3。 串口2发送给模块,串口3只是用来打印。 由于GSM模块发射信号功率较大,电脑的USB供电电流较小,板子供电不足问题这里我需要外接一个电源供电。 代码烧录后用充电宝给板子供电,串转USB接串口3调试打开串口调试助手更直观。 百度网盘源码最后附上整个工程源码,只需要在主函数转修改UNICON编码的电话号码和内容即可。 (仅供学习使用) 链接:https://pan.baidu.com/s/1z6PluDTkZXngFkTuBAYTUw 提取码:9438 |
今日新闻 |
推荐新闻 |
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 |