從收到機智云的第一批試用板子到現在也挺久了,一直沒時間和大家分享,今天抽空寫下我的感受,機智云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的數據處理方式,我們下節再探討。
-
語音識別
+關注
關注
38文章
1742瀏覽量
112932 -
源代碼
+關注
關注
96文章
2946瀏覽量
66963 -
Gokit
+關注
關注
2文章
12瀏覽量
12554
原文標題:Gokit3.0 STM32源代碼分析之一
文章出處:【微信號:IoTMaker,微信公眾號:機智云開發者】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論