找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2377|回复: 0
打印 上一主题 下一主题
收起左侧

openmv和STM32进行串口通信程序 2020年电赛F题简单复刻

[复制链接]
跳转到指定楼层
楼主
由于本人最近在简单复刻2020年电赛f题,然后碰到的关于openmv和STM32串口通信的问题,在这里跟大家分享一下心得(新手,程序写的很烂,并且红外测温的程序因为没找到模块所以未测试,不喜勿喷)
1、 硬件
openmv,正点原子STM32精英板
这里我们32的串口选用的是串口1,openmv选择的是串口3
连接的话openmv的P4接32的PA10,P5接32的PA9
2、 程序
在传统的单片机应用中,两个单片机串口通信,都是自己定义一些帧,包括帧头,数据帧,校验帧,帧尾。
这种方式,稳定,高效。缺点也很明显:开发难度稍大,需要自己制定协议,编码解码需要手动编写。如果想快速尝试两个单片机通信的推荐使用串口传输json字符串
优点:不需要了解底层的事情,比如:
·       不考虑大端小端
·       不考虑数据的byte转换
·       支持任意长的int,float
·       简单易懂,容易开发。
缺点:效率稍低。json的编码和解码会占用cpu。
其实传输json在网络编程中已经成为标准,比如在restful api中,前端和后端使用json来获取信息。只是在传统单片机的领域中不常见,一方面是效率稍低,嵌入式通常对成本的控制要求比较高。但是随着芯片成本的降低,很多应用对物料成本要求不是很高了,对开发效率越来越重视。
openmv端
OpenMV有json的模块,json.dumps(obj)和ujson.loads(str)可以很容的生成json字符串和解析json字符串。
import json
obj =[[12,0],[10,12],[22,10],[99,11]]
print(json.dumps(obj))
obj = {
    "number":10,
    "color" :[255,0,0],
    "rate" :0.65
}
print(json.dumps(obj))
输出如下
'[[12, 0], [10, 12],[22, 10], [99, 11]]'
'{"color":[255, 0, 0], "number": 10, "rate": 0.65}'然后把字符串通过串口发送出去,然后在另一端,把json字符串解析成对象/数组。然后进行接下来的逻辑操作。
刚开始直接用自带的串口发送函数,最后发现行不通,所以才考虑用json字符串
STM32端
配置串口1,编写中断函数即可

1.png (935.96 KB, 下载次数: 50)

STM32精英板

STM32精英板

2.png (722.9 KB, 下载次数: 59)

openmv

openmv

openmv串口.png (68.53 KB, 下载次数: 66)

openmv程序

openmv程序

STM32串口程序1.png (186.49 KB, 下载次数: 68)

STM32串口程序1

STM32串口程序1

STM32串口程序2.png (104.46 KB, 下载次数: 62)

STM32串口程序2

STM32串口程序2

Keil代码下载,本人初学,如有错误请多多指点.7z

735.98 KB, 下载次数: 36, 下载积分: 黑币 -5

评分

参与人数 1黑币 +80 收起 理由
admin + 80 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶1 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表