无线控制单片机1-单片机端代码实现

使用蓝牙调试器调试单片机

借助蓝牙调试器我们可以很轻易地通过各种控件操作变量,现在要考虑的是如何让单片机获知这些变量?

首先确定单片机和蓝牙串口模块的连接方式:

需要注意的是蓝牙串口模块与单片机之间的连接,其TX、RX与单片机TX、RX是交叉的。如果你使用STM32单片机的USART1的话,则 蓝牙的TX 连接 单片机的PA10口, 蓝牙的RX连接单片机的PA9口。

连接方式

连接好蓝牙串口模块后,就开始写单片机程序了。由于我已经编写好了可以自由配置的单片机端的程序,所以你可以很方便地实现收发功能。代码在这

1.数据结构设置

下面是我编写好的名为valuepack的代码,其是在STM32F103单片机运行的,你也可以针对不同的平台进行修改,在使用此功能前,你首先需要在valuepack.h中配置通信结构。

在valuepack.h中配置参数

1.1接收缓冲区尺寸

缓冲区用来暂存从手机接收到的数据包,每次执行readValuePack时将这些暂存的数据包解析。缓冲区的尺寸默认为1024。

1.2发送数据包结构 

这里定义发送到手机的数据包的结构,即状态回传。在这里你可以像在蓝牙调试器上一样设置数据包中五种变量的数目。需要确保在此设置的五种类型变量的数目与手机的“接收数据包结构”的设置相同。否则手机端将无法解析该数据包。

1.3接收数据包结构 

这里定义从手机接收的数据包的结构,需要确保在此设置的五种类型变量的数目与手机的“发送数据包结构”的设置相同。

接下来就可以通过调用其函数实现数据收发了。

2.串口配置


初始化串口

3.接收数据包

3.1接收数据包结构体

创建接收数据包

首先创建一个接收数据包,该数据包中包含了五个数组,对应不同的数据类型。比如rxpack.bools[0]可以访问bool类型的第一个变量。

3.2读包

解析数据包

在手机不断发送数据到单片机时,单片机需要定时执行readValuePack,并将接收数据包的地址传过去。读包的频率最好高于手机发送数据包的频率。

4.发送数据包

4.1发送数据包结构体

创建发送数据包

创建一个发送数据包,该数据包中包含了五个数组,对应不同的数据类型。比如txpack.bools[0]可以访问bool类型的第一个变量。

4.2发包

发送数据包

单片机定时执行sendValuePack函数,并传入要发送的数据包。sendValuePack函数执行频率不可过高,太高容易导致堵塞。

至此已经整个单片机端的数据收发就完成了。函数总共就三个 init、read和send,使用起来非常简单。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容