第六天:程序框架和代码实现

学习目标:程序框架和代码实现

将一个模块作为ST-LINK,用烧录工具将此模块升级为成最新的ST-LINK固件,然后可以用此模块给另一个模块进行烧录(将两个模块用灰排线连接)。

步骤:
1)将开发板的 “USB切换开关”拨到 “非ON”一端,然后插上电脑USB口。打开STM32F103工具“100ask_stm32f103_tools.exe“,如图所示:

在这里插入图片描述
选择“ST-LINK”进行下载。
2)下载完成后,需要将 “USB切换开关”拨到 “ON”一端,然后重新插入电脑,点击“确认”,进行升级

在这里插入图片描述
3)在弹出的升级界面,点击“Device Connect”进行连接,

在这里插入图片描述
4)连接成功后,可以看到当前版本为“V2.J16.S4”,点击“Yes”升级到“V2.J38.S7”

在这里插入图片描述

5)连接100ASK_STM32F103_MINI开发板使用
对于100ASK_STM32F103_MINI,在设计上做了兼容,直接使用定制灰排线,按如图所示连接,即一个作为ST-Link调试器,一个作为开发板,对后者进行调试和下载。
在这里插入图片描述
6)将开发板与物联网模块进行连接。

在这里插入图片描述

6.2用keil打开代码

1)GPIO/中断初始化
在这里插入图片描述
2)向ESP8266发送数据

先定义buf用来存放将要输入的指令,为了页面看起来简洁,给每次的AT指令添加换行,如果指令中没有找到换行符,则在指令后添加一个换行符。 然后就需要发送和接受数据,为了防止后面接收数据时受到上一次残留数据的干扰,这里添加将之前指令清空的函数。 在接收数据时,将前面的buf再用memset进行清除。因为在接收数据时会 有时限,因此先判断是否超时。然后进行数据有无的判断。若有数据,那么就发送成功,若没检测到,则进行减时,每次timeout--,直到500ms减完,若还是没有数据,那么最后判断为返回失败。 完整代码如下所示:
在这里插入图片描述
3)主函数中进行指令的发送,若产生报错,这时使用单步调试来检查报错原因。

在这里插入图片描述
在这里插入图片描述
单步调试第三步时,会正常,若直接进行执行,还是会报错,因为这里会产生延时。 后面可以添加延时函数HAL_Delay(500);
4)获取ESP8266的IP
思路与第(2)步类似,只是获取指令不同
在这里插入图片描述
5)改变按键的状态
按下按键后,返回1(在GPIO.c中修改),将按键变为0状态。使用中断获取按键值。
在这里插入图片描述
6)发送UDP数据

判断指令是否发送成功,若发送成功返回0,失败1

在这里插入图片描述
7)判断按键按下时是否收到数据
当按键按下,发送数据,让灯亮。若按键按下收到数据,收到数据(“dev那一串”)为0,则让灯灭,若收到数据为1,则让灯亮

在这里插入图片描述
当接收不到数据时,可以检测rx_data数据的变化。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值