欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

单片机开发无线控制系列-单片机端代码实现

发布时间:2024/1/8 编程问答 97 豆豆
生活随笔 收集整理的这篇文章主要介绍了 单片机开发无线控制系列-单片机端代码实现 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

 

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

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

需要注意的是蓝牙串口模块与单片机之间的连接,其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,使用起来非常简单。

单片机端的源代码

总结

以上是生活随笔为你收集整理的单片机开发无线控制系列-单片机端代码实现的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。