前言:
现时我们对“c语言memset函数的代码”可能比较关切,各位老铁们都想要分析一些“c语言memset函数的代码”的相关文章。那么小编在网摘上汇集了一些关于“c语言memset函数的代码””的相关内容,希望看官们能喜欢,朋友们快快来了解一下吧!大家好,我是老耿,高职青椒一枚,一直从事单片机、嵌入式、物联网等课程的教学。对于高职的学生层次,同行应该都懂的,老师在课堂上教学几乎是没什么成就感的。正是如此,才有了借助头条平台寻求认同感和成就感的想法。在这里,我准备陆续把自己花了很多心思设计的教学课件分享出来,如果您正是一名单片机爱好者或是一名同行,欢迎点赞+关注,各位的支持是本人持续输出的动力,多谢多谢!#30天学会STM32##STM32单片机##单片机#
在之前的章节中,我们已经学习了传感器数据的采集和显示,但仅限于本开发板之上。既然是物联网开发板,那么接下来的需求就是将传感器数据通过网络上传云端。本章我们来完成开发板入网的工作,为下一步数据上云做准备。
【学习目标】
了解ESP8266模块特点与组网模式了解ESP8266常用的AT指令看懂开发板上ESP8266模块与STM32的连接结合联网测试程序,明白ESP8266接入WiFi热点和连接服务器的过程
STM32控制ESP8266入网其实并不复杂,但落实到细节还是有不少东西可讲的,本章打算分三个部分来讲解,本文是第二部分。
三、工程源码剖析3.1 串口2初始化与中断处理源码
在前面,我们学习了有关STM32串口的知识,并剖析了与串口1相关的代码(参见本合集的“串口通信”部分)。在此基础上,我们增加与串口2有关的代码到usart.c文件中,使之满足与ESP8266“对话”的要求。
1)uart2_init()函数源码
该函数用来初始化串口2及其中断,与之前初始化串口1的流程一致,大家阅读代码清单1的时候顺便再好好回顾一下相关知识。当然,不要忘了把该函数在usart.h头文件里声明一下。
2)Usart_SendString()函数源码
考虑到需要给ESP8266发AT指令这样一串字符,而固件库里只提供了发送单个字符的函数USART_SendData(),因此构造了这个发送字符串的函数Usart_SendString(),如代码清单2所示。
3)串口2中断处理函数
该函数用来接收和处理ESP8266“回复”的消息,就如同串口1接收来自串口助手发来的消息。由于是中断处理函数,因此函数名是规定好的USART2_IRQHandler。考虑到它专门用来处理ESP8266的消息,因此把它写进esp8266.c这个文件中更合适,其源码剖析见下面的3.3小节。
3.2 esp8266.h文件源码
如代码清单3所示,这个头文件里声明了必要的全局变量和驱动函数,构造它们需要对ESP8266工作过程中的功能细节进行抽象和分解,也需要有较强的嵌入式开发经验,大家阅读源码时可以好好领悟一下。
3.3 esp8266.c文件源码
该文件的源码较多,是每个驱动函数的实现,这里为了突出源码的功能细节和排版之需,对源码进行了必要的分割处理,连续且完整的源码请阅读本实验配套的工程。
1)头文件、宏、全局变量
我们先把该文件前面非函数部分的代码拎出来,如代码清单4所示,其中的注释已经很详细了。
2)ESP8266_Clear()函数源码
在与ESP8266“对话”过程中,其回复的内容都是放在esp8266_buf[]缓冲区里的,新内容到来之前应该把旧内容清空,该函数便起到这个作用,如代码清单5所示,清空缓存用的是标准库stdio.h里的memset()函数。
3)ESP8266_WaitReceive()函数源码
该函数通过检测记录消息长度的计数值,来判断ESP8266发来的消息是否接收完成,如代码清单6所示。该函数在调用时应放在循环里,直到接收完成才退出循环。
4)ESP8266_SendCmd()函数源码
该函数的功能是向ESP8266发一条AT指令,如代码清单7所示,参数*cmd是指令内容,通过调用Usart_SendString()函数把指令发到串口2。考虑到发送需要时间,也可能失败,因此设置了一个超时参数timeOut,通过循环检测接收是否完成,来决定指令发送是否成功。在不超时的情况下接收完成,说明发送成功,否则发送失败。
5)ESP8266_Init()函数源码
该函数对连接ESP8266复位引脚的PC14进行初始化,并给出复位时序完成ESP8266的初始化,如代码清单8所示。
6)串口2中断处理函数源码
该函数在3.1小节中已提及,是用来接收ESP8266“回复”的消息,如代码清单9所示,消息的内容保存在esp8266_buf缓冲区里。当然,对于超过缓冲区长度(200个字节)的消息做了截断处理。
3.4 main.c文件源码
再看一眼前面图10的流程,可以发现主程序要解决两方面的问题:一方面是将串口助手发来的AT指令转发给ESP8266,另一方面则是将ESP8266回复的消息“打印”到串口助手,从而实现“对话”。完整的源码和注释见代码清单10,其中涉及串口1的接收、打印和回显,我们在本合集“串口通信”部分的源码中已经分析过了,大家重温的同时再领悟一下与串口2的结合。
(第二部分完,下一部分我们对上述代码进行测试,并据此进行完善和补充)
标签: #c语言memset函数的代码