1. 程式人生 > >官方生成的MCU程式碼(hal庫)移植到標準庫的STM32教程

官方生成的MCU程式碼(hal庫)移植到標準庫的STM32教程

前言

手頭上正好有STM32的開發板和ESP-12E模組,想著控制個WS2812玩玩。到MCU開發的時候下載了生成的程式碼發現是HAL庫的,無奈自己剛剛學習stm32,用的是標準庫

,在論壇發現關於STM32CubeMX移植的教程滿天飛,標準庫卻寥寥無幾,發現有很多群友和我一樣剛剛接觸不知道怎麼移植,這裡參考了官方的移植MSP340教程並修改出適用於STM32標準庫的教程。

進入正文

步驟1、下載好的程式碼包是這樣的,需要把這兩個資料夾直接複製到自己工程的資料夾裡面:

步驟2、新增到自己的工程組裡面,並新增路徑:

步驟3、正題來了,現在開始移植工作,需要修改的檔案分別如下:3.1、開啟gizwits_product.h 需要修改的地方如下,檢視程式碼行數可以快速找到)

3.2、開啟gizwits_product.c,需要修改的地方如下:

下面刪除的幾個初始化函式很重要...必須自己寫好,要能正常使用

接下來是串列埠傳送函式,我用的是DMA+中斷髮送接收的,修改成能傳送資料的函式..建議先把串列埠功能除錯好在填入呼叫

int32_t uartWrite(uint8_t *buf, uint32_t len){uint32_t i = 0;if(NULL == buf){return -1;}for(i=0; i<len; i++){//這裡填入串列埠傳送函式TxBuff_esp8266[i]=*buf++;/* if(i >=2 && buf[i] == 0xFF){//這裡填入串列埠傳送函式,傳送0x55,意思是遇到0xFF後面要加0x55//這地方折騰了很久才成功,官方的大神說要加上,但是我刪除了也可以用,求解釋//官方說是要求加上的..我直接刪除了也能用,你們要是這裡加了不行的話也刪掉試試}*/

修改好了記得儲存。

步驟4、接下來開啟main.c檔案新增自己的初始化程式碼,並且呼叫gizwits的相關函式記得把這兩個標頭檔案包含進去

#include "gizwits_product.h"#include "common.h"

我的初始化函式是自己封裝的,比較簡陋,反正功能能實現就行了

步驟5、修改中斷函式

接下來就是編譯了,要是有錯誤的地方看一下是不是外部函式呼叫的時候沒有包含進函式所在的標頭檔案。步驟6、開啟gizwits_product.c,找到gizwitsEventProcess的函式,下面那裡有你新增的資料點,可以新增自己想要的功能。

舉個栗子我的是控制WS2812,直接在裡面呼叫WS2812的亮燈函式,把讀到的資料顏色資料填入就可以了

移植的步驟大概就是這麼多,試了一下燒錄了進去確實可以用app控制。還有很多功能沒有除錯,剩下的功能要去參考其他大神的了。靜靜的做一名的伸手黨。

要是有什麼錯誤的地方請指正,我也是這兩天剛剛琢磨出來,希望能互相學習。誒,那個,第一次寫教程,stm32也剛接觸沒多久,水平有限,有什麼寫得不好或者錯了的地方請告之改正

附上參考官方的移植MSP430教程:http://docs.gizwits.com/zh-cn/deviceDev/GoKit3_DEV_SDK_Common_transplant.html