從收到機(jī)智云的第一批試用板子到現(xiàn)在也挺久了,一直沒時(shí)間和大家分享,今天抽空寫下我的感受,機(jī)智云Gokit3.X是2016年6月25日發(fā)布的新產(chǎn)品,模型與Gokit2基本相同,采用底板+功能板+模組的方式,保留Arduino接口,可擴(kuò)展性不錯(cuò),具備以下功能:
獨(dú)創(chuàng)的雙排模組接口,兼容MCU和SoC兩種連接方式。
1路USB轉(zhuǎn)TTL調(diào)試串口??捎糜赟oC方式開發(fā)的日志輸出。
兼容Arduino接口。
GoKit經(jīng)典傳感器組合,溫濕度、紅外感應(yīng)、雙向電機(jī)、RGB燈。
3個(gè)key。
增加2路MIC,1路Speaker。
豐富的擴(kuò)展接口,如OLED等。
有3種配置:
GoKit3(V) - 語音模組版 (GoKit3功能板+底板+宇音天下模組)
GoKit3(S) - SoC版(樂鑫模組(GoKit3轉(zhuǎn)接板)+底板+GoKit3功能板)
GoKit3(H) - 高性能模組版
我拿到的是帶宇音天下模組Lark7618的語音識(shí)別版本,機(jī)智云還送了ESP8266的模塊,贊一個(gè)!試用了下效果還不錯(cuò),一些基本的開源項(xiàng)目論壇已經(jīng)很多了,我就不多說了,我著重分享下STM32端整個(gè)程序的流程,機(jī)智云傳輸這么穩(wěn)定得益于它整個(gè)框架的完整性,包括協(xié)議的制定以及解碼部分的機(jī)制,是一個(gè)比較好的框架,下面重點(diǎn)分析:
首先我們來看主函數(shù),開始先將系統(tǒng)初始化,主要包括Flash接口和時(shí)鐘的配置,這里初始化為72MHz,之后是用戶數(shù)據(jù)部分初始化
主要包括系統(tǒng)延時(shí)、串口、RGB燈、LED燈、電機(jī)、溫濕度、紅外對(duì)管等的初始化,之后開啟看門狗,復(fù)位時(shí)間2s,然后就是按鍵的配置了,按鍵部分程序也不錯(cuò),值得我們借鑒,我們找到按鍵定義的地方,
然后追蹤定義,我們go to definition,查看singleKey數(shù)組的定義結(jié)構(gòu)體,定義如下
主要有按鍵Num,GPIO端口,以及長按短按的回調(diào)函數(shù)。之后看到將數(shù)組地址與按鍵數(shù)值組合成keysTypedef_t這樣一個(gè)結(jié)構(gòu)體,方便調(diào)用結(jié)構(gòu)體各個(gè)參數(shù),明白了按鍵的定義,我們接著看按鍵的初始化
將每個(gè)按鍵的物理GPIO以及長短按回調(diào)函數(shù)都賦值到相應(yīng)數(shù)組,這里一共初始化了2個(gè)按鍵,之后將數(shù)組地址傳到keys這個(gè)結(jié)構(gòu)體變量,初始化之后就可以通過keys來調(diào)用按鍵的所有功能了。按鍵的具體控制原理后面會(huì)將。接下來是機(jī)智云協(xié)議的初始化,之后打印一串初始化成功的數(shù)據(jù)。
那么gizwitsInit();初始化了什么東西呢,我們進(jìn)去看看
這里就是初始化定時(shí)器和串口了,定時(shí)器初始化了定時(shí)器3,時(shí)鐘9分頻,自動(dòng)重裝載值7199,算下來1ms中斷一次,我們追蹤到定時(shí)器中斷
看到這個(gè)定時(shí)器的作用是提供一個(gè)時(shí)基, gizwitsProtocol.timerMsCount每秒加1。然后串口這里初始化了串口2,主要用來通訊,之后就是串口環(huán)形buff的一些初始化,下節(jié)介紹。
之后就進(jìn)入主循環(huán)了,喂狗,用戶數(shù)據(jù)的處理以及整個(gè)協(xié)議的運(yùn)轉(zhuǎn)一直循環(huán)。
這個(gè)圖是用Xmind做的,詳細(xì)分析了整個(gè)程序的框架,當(dāng)然,精髓不在這里,關(guān)于按鍵和串口環(huán)形buffer的數(shù)據(jù)處理方式,我們下節(jié)再探討。
-
語音識(shí)別
+關(guān)注
關(guān)注
38文章
1703瀏覽量
112425 -
源代碼
+關(guān)注
關(guān)注
96文章
2943瀏覽量
66570 -
Gokit
+關(guān)注
關(guān)注
2文章
12瀏覽量
12479
原文標(biāo)題:Gokit3.0 STM32源代碼分析之一
文章出處:【微信號(hào):IoTMaker,微信公眾號(hào):機(jī)智云開發(fā)者】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論