使用stm32 SIM800A发送短信

本文介绍了如何利用STM32单片机通过SIM800A模块发送短信,主要涉及USART配置及AT指令的使用,实现自动执行发送操作。
摘要由CSDN通过智能技术生成

关于GSM800A发送短信  只需要配置好USART发送AT指令   模块会自动执行指令完成操作


//主函数部分
int main(void)
{ 

	Usart1_Init(115200);	 
	Usart2_Init(115200);
     Delay_Init(72);
  	
  while(1)
  {
/*****************************************************************************************
函数名  :     GSM发送短信
	  功能    :  由PA2(usart2)发送AT指令向sim800A的TXD  完成发送短信   PA3是读取sim800a的数据(未写)
出口参数:   PA2->TXD   PA3(未使用)
入口参数:发送的数据
返回值  :无
******************************************************************************************/
	  Usart2_Send_string((u8 *)"AT\r\n");  //发送AT字符串
	   Delay_Ms(2000);
	  Usart2_Send_string((u8 *)"AT+CMGF=1\r\n");  //发送AT字符串
	   Delay_Ms(2000);
	  Usart2_Send_string((u8 *)"AT+CMGS=\"18176219627\" \r\n");  //发送AT字符串
	   Delay_Ms(2000);
	  Usart2_Send_string((u8 *)"huangqiubin\r\n");  //发送AT字符串
	   Delay_Ms(2000);
	 // Usart2_Send_string((u8 *)"1A\r\n");  //发送AT字符串 二进制发送 
	   Usart2_Send_byte(0x
使用STM32SIM800C模块发送短信的基本步骤如下: 1. 初始化SIM800C模块:使用串口通信与模块进行通信,发送AT指令初始化模块。 2. 设置SIM卡:如果使用SIM卡进行短信发送,则需要插入SIM卡并设置密码等信息。 3. 设置短信模式:使用AT指令设置短信模式为文本模式,以便发送和接收ASCII码格式的短信。 4. 设置短信中心号码:使用AT指令设置短信中心号码,以便发送短信。 5. 编写短信内容:使用AT指令设置短信内容,可以包括短信接收方的电话号码和短信正文。 6. 发送短信使用AT指令发送短信并等待响应,如果响应正确则表示短信发送成功,否则需要根据错误信息进行调试。 下面是一个简单的示例代码,可以帮助你理解如何使用STM32SIM800C模块发送短信: ```c #include <stdio.h> #include <string.h> #include "stm32f4xx.h" #define SIM800C_UART USART1 void SIM800C_Init(void) { GPIO_InitTypeDef gpioInitStruct; USART_InitTypeDef usartInitStruct; // 使能USART1时钟和GPIOA时钟 RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE); // 配置USART1的GPIO引脚 gpioInitStruct.GPIO_Pin = GPIO_Pin_9 | GPIO_Pin_10; gpioInitStruct.GPIO_Mode = GPIO_Mode_AF; gpioInitStruct.GPIO_Speed = GPIO_Speed_50MHz; gpioInitStruct.GPIO_OType = GPIO_OType_PP; gpioInitStruct.GPIO_PuPd = GPIO_PuPd_UP; GPIO_Init(GPIOA, &gpioInitStruct); // 将USART1的TX和RX引脚连接到GPIOA的引脚上 GPIO_PinAFConfig(GPIOA, GPIO_PinSource9, GPIO_AF_USART1); GPIO_PinAFConfig(GPIOA, GPIO_PinSource10, GPIO_AF_USART1); // 配置USART1的串口参数 usartInitStruct.USART_BaudRate = 9600; usartInitStruct.USART_WordLength = USART_WordLength_8b; usartInitStruct.USART_StopBits = USART_StopBits_1; usartInitStruct.USART_Parity = USART_Parity_No; usartInitStruct.USART_HardwareFlowControl = USART_HardwareFlowControl_None; usartInitStruct.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; USART_Init(SIM800C_UART, &usartInitStruct); // 使能USART1 USART_Cmd(SIM800C_UART, ENABLE); } void SIM800C_SendAT(char* cmd) { char buffer[64]; sprintf(buffer, "%s\r\n", cmd); USART_SendString(SIM800C_UART, buffer); } void SIM800C_SendSMS(char* phoneNumber, char* message) { SIM800C_SendAT("AT+CMGF=1"); // 设置短信模式为文本模式 SIM800C_SendAT("AT+CSCA=\"+8613800755500\""); // 设置短信中心号码 USART_SendString(SIM800C_UART, "AT+CMGS=\""); USART_SendString(SIM800C_UART, phoneNumber); USART_SendString(SIM800C_UART, "\"\r\n"); HAL_Delay(1000); USART_SendString(SIM800C_UART, message); USART_SendByte(SIM800C_UART, 0x1A); // 发送CTRL+Z结束短信 } int main(void) { SIM800C_Init(); SIM800C_SendSMS("+861XXXXXXXXXX", "Hello, this is a test message."); while (1); return 0; } ``` 在上面的代码中,我们首先通过SIM800C_Init函数初始化了模块的串口通信,然后使用SIM800C_SendSMS函数发送了一条短信。注意,在发送短信之前需要设置短信模式、短信中心号码以及短信接收方的电话号码和短信正文。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值