电子说
从收到机智云的第一批试用板子到现在也挺久了,一直没时间和大家分享,今天抽空写下我的感受,机智云Gokit3.X是2016年6月25日发布的新产品,模型与Gokit2基本相同,采用底板+功能板+模组的方式,保留Arduino接口,可扩展性不错,具备以下功能:
独创的双排模组接口,兼容MCU和SoC两种连接方式。
1路USB转TTL调试串口。可用于SoC方式开发的日志输出。
兼容Arduino接口。
GoKit经典传感器组合,温湿度、红外感应、双向电机、RGB灯。
3个key。
增加2路MIC,1路Speaker。
丰富的扩展接口,如OLED等。
有3种配置:
GoKit3(V) - 语音模组版 (GoKit3功能板+底板+宇音天下模组)
GoKit3(S) - SoC版(乐鑫模组(GoKit3转接板)+底板+GoKit3功能板)
GoKit3(H) - 高性能模组版
我拿到的是带宇音天下模组Lark7618的语音识别版本,机智云还送了ESP8266的模块,赞一个!试用了下效果还不错,一些基本的开源项目论坛已经很多了,我就不多说了,我着重分享下STM32端整个程序的流程,机智云传输这么稳定得益于它整个框架的完整性,包括协议的制定以及解码部分的机制,是一个比较好的框架,下面重点分析:
首先我们来看主函数,开始先将系统初始化,主要包括Flash接口和时钟的配置,这里初始化为72MHz,之后是用户数据部分初始化
主要包括系统延时、串口、RGB灯、LED灯、电机、温湿度、红外对管等的初始化,之后开启看门狗,复位时间2s,然后就是按键的配置了,按键部分程序也不错,值得我们借鉴,我们找到按键定义的地方,
然后追踪定义,我们go to definition,查看singleKey数组的定义结构体,定义如下
主要有按键Num,GPIO端口,以及长按短按的回调函数。之后看到将数组地址与按键数值组合成keysTypedef_t这样一个结构体,方便调用结构体各个参数,明白了按键的定义,我们接着看按键的初始化
将每个按键的物理GPIO以及长短按回调函数都赋值到相应数组,这里一共初始化了2个按键,之后将数组地址传到keys这个结构体变量,初始化之后就可以通过keys来调用按键的所有功能了。按键的具体控制原理后面会将。接下来是机智云协议的初始化,之后打印一串初始化成功的数据。
那么gizwitsInit();初始化了什么东西呢,我们进去看看
这里就是初始化定时器和串口了,定时器初始化了定时器3,时钟9分频,自动重装载值7199,算下来1ms中断一次,我们追踪到定时器中断
看到这个定时器的作用是提供一个时基, gizwitsProtocol.timerMsCount每秒加1。然后串口这里初始化了串口2,主要用来通讯,之后就是串口环形buff的一些初始化,下节介绍。
之后就进入主循环了,喂狗,用户数据的处理以及整个协议的运转一直循环。
这个图是用Xmind做的,详细分析了整个程序的框架,当然,精髓不在这里,关于按键和串口环形buffer的数据处理方式,我们下节再探讨。
全部0条评论
快来发表一下你的评论吧 !