关于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(0x1a);Delay_Ms(2000);while(1){        printf("我的鸡汤完成了!!!!啊哈哈哈哈哈");}}
}//串口配置部分#include "usart2.h"
/*****************************************************************************************
函数名  :
功能    :串口1初始化
出口参数:
入口参数:bound 波特率
返回值  :
说明    :IO PA2  TX PA3RX
******************************************************************************************/
void Usart2_Init(u32 bound)
{#if 0u16    DIV_Mantissa;//整数部分float  DIV_Fraction;//小数部分RCC->APB2ENR |=1<<2;//PA时钟RCC->APB2ENR |=1<<14;//串口一时钟//PA9GPIOA->CRH   &=0XFFFFFF0F;//清0GPIOA->CRH   |=0X000000B0;//复用推挽输出//PA10GPIOA->CRH   &=0XFFFFF0FF;//清0GPIOA->CRH   |=0X00000400;//复用推挽输出DIV_Fraction=(float)72000000/16/bound;//计算波特率DIV_Mantissa=(u16)DIV_Fraction;//整数部分DIV_Fraction=DIV_Fraction-DIV_Mantissa;//得出小数部分USART2->BRR = (DIV_Mantissa<<4 )+(DIV_Fraction*16);USART2->CR1 |= 1<<2|1<<3|1<<13;//开启接收使能 发送使能 串口使能#elseUSART_InitTypeDef USART_InitStruct;//定义串口类型结构体变量GPIO_InitTypeDef  GPIO_InitStruct; //定义GPIO类型结构体变量NVIC_InitTypeDef  NVIC_InitStruct; //定义中断向量控制器的变量RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA , ENABLE);//开启串口时钟 PA时钟RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE);//开启串口时钟 PA时钟/*****TX********/GPIO_InitStruct.GPIO_Mode =GPIO_Mode_AF_PP;GPIO_InitStruct.GPIO_Pin  =GPIO_Pin_2;GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(GPIOA, &GPIO_InitStruct);/*****RX********/GPIO_InitStruct.GPIO_Mode =GPIO_Mode_IN_FLOATING;GPIO_InitStruct.GPIO_Pin  =GPIO_Pin_3;GPIO_Init(GPIOA, &GPIO_InitStruct);USART_InitStruct.USART_BaudRate  =bound;//设置波特率USART_InitStruct.USART_HardwareFlowControl=USART_HardwareFlowControl_None;USART_InitStruct.USART_Mode      = USART_Mode_Tx|USART_Mode_Rx;//全双工模式USART_InitStruct.USART_Parity    =USART_Parity_No;           //无校验USART_InitStruct.USART_StopBits  =USART_StopBits_1;         //一个停止位USART_InitStruct.USART_WordLength=USART_WordLength_8b;    //8位数据USART_Init(USART2, &USART_InitStruct);USART_ITConfig(USART2,USART_IT_RXNE,ENABLE);              //使能串口接收中断USART_ITConfig(USART2,USART_IT_IDLE ,ENABLE);              //使能串口空闲中断USART_Cmd(USART2, ENABLE);                                //使能串口NVIC_InitStruct.NVIC_IRQChannel=USART1_IRQn;//通道选择NVIC_InitStruct.NVIC_IRQChannelCmd=ENABLE;  //使能NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority=1;NVIC_InitStruct.NVIC_IRQChannelSubPriority=1;NVIC_Init(&NVIC_InitStruct);#endif}
/*****************************************************************************************
函数名  :
功能    :发送一字节函数
出口参数:
入口参数:发送的数据
返回值  :
******************************************************************************************/void Usart2_Send_byte(u8 data)
{// while(!(USART1->SR & 1<<6));//等待发送完成 //USART1->DR =data;           //发送数据一个字节while(!USART_GetFlagStatus(USART2, USART_FLAG_TXE));USART_SendData(USART2, data);
}
/*****************************************************************************************
函数名  :
功能    :读取一个字节
出口参数:
入口参数:
返回值  :返回读到的字节
说明    :堵塞式接收
******************************************************************************************/
u8 Usart2_Read_byte(void)
{//while(!(USART1->SR & 1<<5));//等待接收完成// return USART1->DR; while(!USART_GetFlagStatus(USART2,USART_FLAG_RXNE));return  USART_ReceiveData(USART2);
}void Usart2_Send_string(u8 *ch)
{while(*ch!='\0'){Usart2_Send_byte(*ch++);}
}u8 Usart2_Readbuff[100];//保存来自电脑的数据
void Usart2_Read_string(void)
{u8 ch;u8 Usart2_Readlen=0;//接收长度while(1){ch=Usart2_Read_byte();                //读取一个字节if(ch!='\r'&&ch!='\n')                //判断是否是结束符{Usart2_Readbuff[Usart2_Readlen++]=ch;//循环保存字符 组成字符串}if(ch=='\n')                          //最后一个字符 结束接收{Usart2_Readbuff[Usart2_Readlen]='\0';//添加结束符break;}}
}

使用stm32 SIM800A发送短信相关推荐

  1. 【毕业设计教程】单片机发送短信消息(GMS模块) - 物联网 嵌入式 stm32

    文章目录 1 简介 2 GMS模块 3 技术规格 3.1 适应性 4 arduino + GMS 示例代码 5 实现效果 6 最后 1 简介 Hi,大家好,这里是丹成学长,今天向大家介绍如何使用GMS ...

  2. 4.2 使用STM32控制MC20发送短信

    需要准备的硬件 MC20开发板 1个 https://item.taobao.com/item.htm?id=562661881042 GSM/GPRS天线 1根 https://item.taoba ...

  3. JAVA如何实现发送短信

    今天看到了一个需求,需要做一个发送短信的功能,网上找了找,大概有这几种方法:(1)使用webservice接口发送手机短信,这个可以使用sina提供的webservice进行发送,但是需要进行注册;( ...

  4. python控制手机发短信_python-在python3中使用容联云通讯发送短信验证码

    2020-08-15更新 今天进容联云官网发现其已经更新了最新版的Python SDK,可以直接 pip install ronglian_sms_sdk 即可安装使用,具体新的使用方法可以查看官网案 ...

  5. android不调用系统发送短信,android之两种方式调用短信发送接口

    释放双眼,带上耳机,听听看~! 相信很多程序员在开发程序的时候都会遇到短信调用端口的情况,今天是技术狗小编为大家带来的关于android之两种方式调用短信发送接口,希望对你学习这方面知识有帮助! an ...

  6. 微信小程序云开发,使用阿里云短信服务,搜索员工生日定期发送短信。

    相关API文档地址: 阿里云短信服务API文档地址 小程序云开发云函数正则匹配API文档地址 小程序云开发云函数定时触发器 1.登录阿里云,购买短信服务并添加签名和模板 2., 登录阿里云,鼠标放在右 ...

  7. 新春祝福必杀计之发送短信攻略

    新的一年就要到了,陆陆续续的收到很多同事们的短信祝福,哎,不能欠人家的人情债啊,但是我实在是个懒人啊,这个祝福短信还是要回复的啊,我的手机里有超过百位联系人,全是和工作有关的,都需要发呢,于是网上找了 ...

  8. 脚本控制向Android模拟拨打电话,发送短信,定位设置功能

    做行为触发的时候要向模拟器实现拨打电话,发送短信,定位设置的的功能,可以很方便通过telnet localhost  5554实现. 写个脚本很快的搞定了.网上资料很多,脚本的很少,也所积点德啦. 写 ...

  9. php 云片网对接,php调用云片网接口发送短信的实现方法

    php调用云片网接口发送短信的实现方法 云片网发送短信 /** * [SendSms description] * @param [string] $tpl_content [发送的短信内容] * @ ...

  10. 安卓 发送短信两种方式

    android中可以通过两种方式发送短信 第一:调用系统短信接口直接发送短信:主要代码如下: Java代码   //直接调用短信接口发短信 SmsManager smsManager = SmsMan ...

最新文章

  1. Jupyter Notebook中显示图像和数学公式
  2. Tornado 学习笔记
  3. java死锁以及解决方案
  4. Model compatibility cannot be checked because the database does not contain model metadata
  5. 利用集合对数据进行去重操作
  6. Android 系统(239)---Android PMS的创建过程
  7. 初识Firebug 全文 — firebug的使用
  8. JS获取JSON对象数组某个属性最大值
  9. BFC与边距重叠详解
  10. Python之路(第十四篇)os模块
  11. 前端实现序列帧_最简单的序列帧动画canvas插件
  12. 谈谈ILDasm的功能限制与解除
  13. 什么是车辆识别代码(VIN)
  14. 学习笔记:微波遥感反演土壤水分——理论模型和经验模型(1)
  15. 保研计算机三级,保研干货 | 这些证书手中有,凡尔赛路任你走
  16. 值得推荐的MAC软件下载软件的网站
  17. python字符串与十六进制互相转换
  18. 2023年NOC加码未来编程(小码王赛道)初赛-Scratch(小学低年级组-卷1)
  19. 携程笔试__界面测试用例
  20. 微机原理与接口技术:微型计算机输入输出接口 详细笔记与例题

热门文章

  1. python snownlp了解_[Python][snownlp]基于情感词典的情感分析
  2. 物体检测学习笔记-3D相机成像原理简介
  3. 随机梯度下降算法(SGD)
  4. 【手把手】教你MySQL调优
  5. EXCEL——向上、向下自动填充数据
  6. Android网络编程之——文件断点下载(暂停/继续/重新下载)
  7. 3.FXBLUE跟单原理
  8. 浅谈程序猿简历的写法,你会如何写你的简历呢。
  9. 如何在程序中调用Bartender软件打印文件模板
  10. 小程序开发:社区团购系统应该如何选择?