最近我拿到了STM32L496AGMCU,發現其擴展版可以連接ESP-01S。我想嘗試將開發板連接到我們的機智云上,并根據機智云提供的文檔進行程序移植。
STM32CubeMX移植機智云自動生成代碼詳解 - 機智云
在移植的過程中遇到的一些問題,這里我將重構一下,大致內容跟文檔差不多,但是根據文檔的操作,會產生一些奇怪的報錯,這里可以根據我的操作做新的移植操作。
移植到其他平臺
1.創建STM32CubeMX 工程文件
在STM32CubeMX中直接選擇您所使用的 MCU(比如這里我們選擇STM32L496AGIx) ,如下:
點擊“Project → Setting”設置工程目錄位置以及相應參數如下所示:
注:里編譯器選擇為Keil 5
導入機智云模板配置文件
因為機智云自動生成的源碼中已經包含了對應平臺的STM32CubeMX工程配置文件,相關驅動參數已經是配置過的,為方便開發者將STM32的源碼移植到其他的平臺,我們可以使用STM32CubeMX的配置文件導入功能,將STM32F103平臺的配置參數導入到STM32L496ZGT6平臺,如下:
選擇File > Import Project
注:只有空白文檔才能導入到我們的工程里面
可以看到我們的對應的引腳已經配置上了
我們查看原理圖發現USART2是STlink的板載通訊,這里我們將板載通訊修改為115200
修改之后我們直接點擊創建工程
我們先關閉項目,之后我們打開之后對應的文件夾。
移植代碼
此時的工程中只有STM32L496ZGT相關的驅動代碼,若要使用機智云的聯網能力就需要移植相關的協議源碼(即前文介紹的已自動生成的STM32F103工程中的三個文件:Gizwits、Hal、Utils)
移植前的STM32L496AGIx工程目錄如下:
移植后(即從STM32F103中復制Gizwits、Hal、Utils到STM32L496AGIx下)如下
接下來我們在STM32L496ZGT的keill5工程中添加如下的目錄結構:
同理加入相應的編譯路徑:
接下來要修改編輯機智云的代碼,但移植文檔的時間為2017年左右的,其中機智云生成代碼會有所改變,接下來我是通過下載到的軟件包,將其中的代碼移植成功。因為按照文檔的操作有些代碼與現在代碼包不匹配,所以會有所報錯。
首先,為了適配對應的平臺應在gizwits_product.h / hal_key.h 中替換為對應平臺的頭文件,例如:
將原來F103C8平臺的頭文件 #include “stm32f1xx_hal.h”** 替換為L496ZGT平臺的 #include"stm32l4xx_hal.h"
注:可以在根目錄下的 Drivers\STM32F1xx_HAL_Driver\Inc 中找到對應平臺的頭文件。接下來在main.c中添加與機智云協議處理相關的代碼:首先是引用的相關頭文件
長短按按鍵回調函數的定義
直接在f103的代碼直接復制過來按鍵代碼(新版代碼邏輯有所改變)
· 接下來是對相關驅動模塊以及機智云協議模塊的初始化
· 最后是在main函數中的循環處理函數調用:
其中我們需要將引入的頭文件.h的f103修改對應的頭文件,這是多數報錯的問題。
最后點擊編譯出現零錯誤零警告
我們成功將機智云代碼移植過來,之后我們燒錄來驗證一下程序是否能正常的執行,其中有些代碼還需要修改,要根據自己的開發板的串口引腳進行改變,之后我們會通過連接到機智云點亮小燈來驗證串口代碼問題,大致基本移植可以完成。
-
STM32
+關注
關注
2273文章
10926瀏覽量
357771 -
代碼
+關注
關注
30文章
4836瀏覽量
69119 -
機智云
+關注
關注
2文章
591瀏覽量
26464
發布評論請先 登錄
相關推薦
STM32L496G QSPI在DMA模式一段時間clock會被拉成Low,可否改善?
stm32cubemx5.0,stm32l496G怎么沒有touchgfx選項?
機智云自動生成工程移植STM32CubeMX
STM32CubeMX移植機智云自動生成代碼詳解
移植機智云代碼到STM32F103
機智云官方生成的MCU代碼(hal庫)移植為STM32標準庫教程
![<b class='flag-5'>機智</b><b class='flag-5'>云</b>官方生成的MCU<b class='flag-5'>代碼</b>(hal庫)<b class='flag-5'>移植</b>為<b class='flag-5'>STM32</b>標準庫教程](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
AN4822_STM32L476xx、486xx和STM32L496xx、4A6xx微控制器之間的移植
![AN4822_<b class='flag-5'>STM32L</b>476xx、486xx和<b class='flag-5'>STM32L496</b>xx、4A6xx微控制器之間的<b class='flag-5'>移植</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
評論