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


參考路徑:http://club.gizwits.com/thread-8806-1-1.html

手頭上正好有STM32的開發板和ESP-12E模塊,想着控制個WS2812玩玩。到MCU開發的時候下載了生成的代碼發現是HAL庫的,無奈自己剛剛學習stm32,用的是標准庫在論壇發現關於STM32CubeMX移植的教程滿天飛,標准庫卻寥寥無幾,發現有很多群友和我一樣剛剛接觸不知道怎么移植,這里參考了官方的移植MSP340教程並修改出適用於STM32標准庫的教程。

-----------------------------------------------------------------------------------------------------------------------
誒,那個,第一次寫教程,stm32也剛接觸沒多久,水平有限,有什么寫得不好或者錯了的地方請告之改正
OK,第三步進入正題1、下載好的代碼包是這樣的,需要把這兩個文件夾直接復制到自己工程的文件夾里面:
<ignore_js_op>

微信截圖_20180608100731.png (36.83 KB, 下載次數: 0)

下載附件

3 天前 上傳

 
<ignore_js_op>

微信截圖_20180608101157.png (53.16 KB, 下載次數: 0)

下載附件

3 天前 上傳

 


2、添加到自己的工程組里面,並添加路徑:
<ignore_js_op>

QQ截圖20180608102135.png (19.72 KB, 下載次數: 0)

下載附件

3 天前 上傳

 
<ignore_js_op>

QQ截圖20180608102522.png (54.37 KB, 下載次數: 0)

下載附件

3 天前 上傳

 


3、正題來了,現在開始移植工作,需要修改的文件分別如下:
3.1、打開gizwits_product.h 需要修改的地方如下查看代碼行數可以快速找到)
<ignore_js_op>

QQ截圖20180608103610.png (22.86 KB, 下載次數: 0)

下載附件

3 天前 上傳

 

3.2、打開gizwits_product.c,需要修改的地方如下:
<ignore_js_op>

QQ截圖20180608104241.png (39.69 KB, 下載次數: 0)

下載附件

3 天前 上傳

 
<ignore_js_op>

QQ截圖20180608111347.png (68.79 KB, 下載次數: 0)

下載附件

3 天前 上傳

 


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

QQ截圖20180608111528.png (63.06 KB, 下載次數: 0)

下載附件

3 天前 上傳

 


接下來是串口發送函數,我用的是DMA+中斷發送接收的,修改成能發送數據的函數..建議先把串口功能調試好在填入調用
  1. int32_t uartWrite(uint8_t *buf, uint32_t len)
  2. {
  3.         
  4.     uint32_t i = 0;
  5.         
  6.     if(NULL == buf)
  7.     {
  8.         return -1;
  9.     }
  10.     for(i=0; i<len; i++)
  11.     {
  12.          //這里填入串口發送函數
  13.           TxBuff_esp8266[i]=*buf++;
  14.                         
  15.        /* if(i >=2 && buf[i] == 0xFF)
  16.         {                        
  17.              //這里填入串口發送函數,發送0x55,意思是遇到0xFF后面要加0x55
  18.              //這地方折騰了很久才成功,官方的大神說要加上,但是我刪除了也可以用,求解釋
  19.              //官方說是要求加上的..我直接刪除了也能用,你們要是這里加了不行的話也刪掉試試
  20.         }*/
復制代碼
修改好了記得保存。
4、接下來打開main.c文件
添加自己的初始化代碼,並且調用gizwits的相關函數
記得把這兩個頭文件包含進去
  1. #include "gizwits_product.h"
  2. #include "common.h"
復制代碼


<ignore_js_op>

QQ截圖20180608142751.png (34.73 KB, 下載次數: 0)

下載附件

3 天前 上傳

 

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

5、修改中斷函數
<ignore_js_op>

QQ截圖20180608112932.png (22.01 KB, 下載次數: 0)

下載附件

3 天前 上傳

 


接下來就是編譯了要是有錯誤的地方看一下是不是外部函數調用的時候沒有包含進函數所在的頭文件。

6、打開gizwits_product.c,找到gizwitsEventProcess的函數,下面那里有你添加的數據點,可以添加自己想要的功能,舉個栗子我的是控制WS2812,直接在里面調用WS2812的亮燈函數,把讀到的數據顏色數據填入就可以了
<ignore_js_op>

微信截圖_20180608114910.png (41.7 KB, 下載次數: 0)

下載附件

3 天前 上傳

 



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

微信圖片_20180608114233.jpg (25.45 KB, 下載次數: 0)

下載附件

3 天前 上傳

 




要是有什么錯誤的地方請指正,我也是這兩天剛剛琢磨出來,希望能互相學習。

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


順便問一下。。下面多了兩張圖片怎么刪除。。第一次用這個。。  - -







<ignore_js_op> QQ截圖20180608105201.png <ignore_js_op> QQ截圖20180608111347.png
 
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM