最近我拿到了STM32L496AGMCU,發(fā)現(xiàn)其擴(kuò)展版可以連接ESP-01S。我想嘗試將開發(fā)板連接到我們的機(jī)智云上,并根據(jù)機(jī)智云提供的文檔進(jìn)行程序移植。
STM32CubeMX移植機(jī)智云自動(dòng)生成代碼詳解 - 機(jī)智云
在移植的過(guò)程中遇到的一些問題,這里我將重構(gòu)一下,大致內(nèi)容跟文檔差不多,但是根據(jù)文檔的操作,會(huì)產(chǎn)生一些奇怪的報(bào)錯(cuò),這里可以根據(jù)我的操作做新的移植操作。
移植到其他平臺(tái)
1.創(chuàng)建STM32CubeMX 工程文件
在STM32CubeMX中直接選擇您所使用的 MCU(比如這里我們選擇STM32L496AGIx) ,如下:
點(diǎn)擊“Project → Setting”設(shè)置工程目錄位置以及相應(yīng)參數(shù)如下所示:
注:里編譯器選擇為Keil 5
導(dǎo)入機(jī)智云模板配置文件
因?yàn)闄C(jī)智云自動(dòng)生成的源碼中已經(jīng)包含了對(duì)應(yīng)平臺(tái)的STM32CubeMX工程配置文件,相關(guān)驅(qū)動(dòng)參數(shù)已經(jīng)是配置過(guò)的,為方便開發(fā)者將STM32的源碼移植到其他的平臺(tái),我們可以使用STM32CubeMX的配置文件導(dǎo)入功能,將STM32F103平臺(tái)的配置參數(shù)導(dǎo)入到STM32L496ZGT6平臺(tái),如下:
選擇File > Import Project
注:只有空白文檔才能導(dǎo)入到我們的工程里面
可以看到我們的對(duì)應(yīng)的引腳已經(jīng)配置上了
我們查看原理圖發(fā)現(xiàn)USART2是STlink的板載通訊,這里我們將板載通訊修改為115200
修改之后我們直接點(diǎn)擊創(chuàng)建工程
我們先關(guān)閉項(xiàng)目,之后我們打開之后對(duì)應(yīng)的文件夾。
移植代碼
此時(shí)的工程中只有STM32L496ZGT相關(guān)的驅(qū)動(dòng)代碼,若要使用機(jī)智云的聯(lián)網(wǎng)能力就需要移植相關(guān)的協(xié)議源碼(即前文介紹的已自動(dòng)生成的STM32F103工程中的三個(gè)文件:Gizwits、Hal、Utils)
移植前的STM32L496AGIx工程目錄如下:
移植后(即從STM32F103中復(fù)制Gizwits、Hal、Utils到STM32L496AGIx下)如下
接下來(lái)我們?cè)赟TM32L496ZGT的keill5工程中添加如下的目錄結(jié)構(gòu):
同理加入相應(yīng)的編譯路徑:
接下來(lái)要修改編輯機(jī)智云的代碼,但移植文檔的時(shí)間為2017年左右的,其中機(jī)智云生成代碼會(huì)有所改變,接下來(lái)我是通過(guò)下載到的軟件包,將其中的代碼移植成功。因?yàn)榘凑瘴臋n的操作有些代碼與現(xiàn)在代碼包不匹配,所以會(huì)有所報(bào)錯(cuò)。
首先,為了適配對(duì)應(yīng)的平臺(tái)應(yīng)在gizwits_product.h / hal_key.h 中替換為對(duì)應(yīng)平臺(tái)的頭文件,例如:
將原來(lái)F103C8平臺(tái)的頭文件 #include “stm32f1xx_hal.h”** 替換為L(zhǎng)496ZGT平臺(tái)的 #include"stm32l4xx_hal.h"
注:可以在根目錄下的 Drivers\STM32F1xx_HAL_Driver\Inc 中找到對(duì)應(yīng)平臺(tái)的頭文件。接下來(lái)在main.c中添加與機(jī)智云協(xié)議處理相關(guān)的代碼:首先是引用的相關(guān)頭文件
長(zhǎng)短按按鍵回調(diào)函數(shù)的定義
直接在f103的代碼直接復(fù)制過(guò)來(lái)按鍵代碼(新版代碼邏輯有所改變)
· 接下來(lái)是對(duì)相關(guān)驅(qū)動(dòng)模塊以及機(jī)智云協(xié)議模塊的初始化
· 最后是在main函數(shù)中的循環(huán)處理函數(shù)調(diào)用:
其中我們需要將引入的頭文件.h的f103修改對(duì)應(yīng)的頭文件,這是多數(shù)報(bào)錯(cuò)的問題。
最后點(diǎn)擊編譯出現(xiàn)零錯(cuò)誤零警告
我們成功將機(jī)智云代碼移植過(guò)來(lái),之后我們燒錄來(lái)驗(yàn)證一下程序是否能正常的執(zhí)行,其中有些代碼還需要修改,要根據(jù)自己的開發(fā)板的串口引腳進(jìn)行改變,之后我們會(huì)通過(guò)連接到機(jī)智云點(diǎn)亮小燈來(lái)驗(yàn)證串口代碼問題,大致基本移植可以完成。
-
STM32
+關(guān)注
關(guān)注
2270文章
10900瀏覽量
356005 -
代碼
+關(guān)注
關(guān)注
30文章
4788瀏覽量
68611 -
機(jī)智云
+關(guān)注
關(guān)注
2文章
590瀏覽量
26409
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論