第六节:程序框架和代码实现(黄老师)

这一节来具体分析如何代码实现,利用开发板,来实现上节课的手机与开发板的通信。

一、调试

先学习一下如何进行调试。

1.简述

我们可以根据学习手册上的步骤将MINI开发板升级为ST-Link,之后我们可以直接用ST-Link下载程序了,就不需要使用配套工具的一键下载功能了。
在这里插入图片描述
开发板连上ST-Link后,就可以直接用keil软件的Download下载程序。

2.CubeMX

如果我们使用CubeMX生成代码的话,开发板的调试引脚会被CubeMX默认设置为GPIO,需要我们改回来。而如果直接用keil编写代码,上电后就默认为调试引脚,不需要修改。

CubeMX配置

在CubeMX中,我们需要选择Debug选项为Serial Wire
在这里插入图片描述

二、代码实现

1.在单片机代码中,我们需要验证AT指令是否发送成功,成功再继续发送下一个指令。当我们发送正确指令时,WIFI模块的回复是OK,错误指令则回复是ERROR

2.同时我们还要注意到,有些指令要等一段时间才会回复OK,因此我们在发送函数中要定义一个超时时间。

3.在WIFI模块接收的AT指令,需要通过换行符来区分每条指令,所以我们必须在每个指令的后面添加\r\n

4.根据上面提到的,我们需要编写一个合适的发送函数来发送数据,包括但不限于验证是否发送成功、超时控制、检测换行符。

5.为了用手机上的小程序进行通信,我们必须打印出WIFI模块的IP地址,因此需要编写一个用于获取IP地址的函数。

6.同时还需要一个函数用于发送UDP数据,发送的数据是JSON格式的,与AT指令不同。

7.最后还要一个函数用于接收数据,点亮或者点灭开发板上的LED灯。

下面解析一下部分代码:

1.发送数据函数

在这里插入图片描述
strcat:字符串拼接函数,这里我们直接利用拼接函数把命令cmd把到buf中。包括第2步中的,将换行符添加到命令中。

strstr:字符串查找函数,用于查找换行符\r\n,当该函数找到后面的参数中的内容,就会返回该位置。

2.发送UDP数据

在这里插入图片描述
sprintf:把数据写入到字符串中,因为我们获取到的字符串长度len是整型变量,而指令是字符串数据,因此不能像上面一样使用strcat

3.程序框架

最后再附上程序框架图。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值