STM32 HAL庫學習:(廢棄)搭建工程模板


背景

STM32 HAL庫是未來的主流,雖然目前還是以標准庫為准。但需要作為學習,以便於未來使用時可以查閱。

這一講我們會介紹如何搭建HAL庫的環境。

2020年初,我發現CubeMX非常好用,於是不再維護本文。

准備

由於HAL庫是在STM32 CubeMX中作為拓展包的形式出現的,那么首先需要安裝CubeMX:下載地址

CubeMX 需要 java 的運行環境(runtime),所以在裝之前還需要 安裝java。

下載包
1)打開軟件
2)Alt+U 或者 Help --> Manage embeded software packages
3)勾選對應型號的包,Install now (stm32cube_fw_f4_v1250.zip)
4)之后可以在Help -> Updater Settings中的Repository Folder看到庫指定路徑

新建目錄

(按照CubuMX的標准)新建 Drivers、 Inc、 Project、 Middlewares、Src

Drivers : 存放CMSIS文件和HAL庫文件
Project :存放Keil工程
Middlewares:第三方庫等
Inc : 存放用戶有關的頭文件
Src :存放用戶有關的源文件


Drivers / CMSIS
- startup_stm32f429xx.s 					: Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/arm
- core_cm4.h 	(以 core_cm4.h 中需要的 頭文件 為准)		: Drivers/CMSIS/Include
	-> cmsis_version.h cmsis_compiler.h cmsis_armcc.h
- system_stm32f4xx.h stm32f429xx.h stm32f4xx.h  		: Drivers/CMSIS/Device/ST/STM32F4xx/Include


Drivers / STM32F4xx_HAL_Driver
- inc : Drivers/STM32F4xx_HAL_Driver/inc
- src : Drivers/STM32F4xx_HAL_Driver/src
- 可以刪除 ll有關 與template 有關的文件


Src:
- bsp/{src, inc}
- main.c 			CubeMX自動生成
- stm32f4xx_hal_msp.c           CubeMX自動生成
- stm32f4xx_hal_conf.h          CubeMX自動生成
- stm32f4xx_it.c 		CubeMX自動生成
- stm32f4xx_it.h 		CubeMX自動生成
- system_stm32f4xx.c 						: Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates

Project:
- 工程有關

以下是一個參考腳本:

#
#    Copyright By Schips, All Rights Reserved
#    https://gitee.com/schips/
#
#    File Name:  make_hal.sh
#    Created  :  Thu 05 Mar 2020 04:57:32 PM CST
#

#!/bin/sh
TOP=`pwd`
BASE=`pwd`
PROJECTNAME=Project_Hal_STM32F4_new
LIB_DIR=./STM32Cube_FW_F4_V1.25.0/

make_dirs () {
    mkdir ${TOP}/${PROJECTNAME} -p
    cd ${TOP}/${PROJECTNAME}
    mkdir CMSIS Library User Project -p
    BASE=`pwd`
}

get_LIB_DIR_PATH () {
    cd  ${TOP}
    cd ${LIB_DIR}
    LIB_DIR=`pwd`
        echo "$LIB_DIR"
}
make_CMSIS () {
    echo ""
    echo "make_CMSIS"
    cd ${BASE}
    echo `ls ${LIB_DIR}/Drivers/CMSIS/Device/ST/STM32F4xx/Include/`
    echo "cp [Drivers/CMSIS/Device/ST/STM32F4xx/Include/*{system_stm32f4xx.h stm32f429xx.h stm32f4xx.h}]"
    cp ${LIB_DIR}/Drivers/CMSIS/Device/ST/STM32F4xx/Include/* ${BASE}/CMSIS -v -r
    # 在 User 目錄下可能也會有,我看看 CubeMX 生成的有沒有
    #echo `ls ${LIB_DIR}/Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/`
    #echo "cp [Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.c]"
    #cp ${LIB_DIR}/Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.c ${BASE}/CMSIS
    echo `ls ${LIB_DIR}/Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/arm`
    echo "cp [Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/arm/startup_stm32f429xx.s]"
    cp ${LIB_DIR}/Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/arm/startup_stm32f429xx.s ${BASE}/CMSIS -v -r
    echo `ls ${LIB_DIR}/Drivers/CMSIS/Include`
    echo "cp [Drivers/CMSIS/Include/{cmsis_version.h cmsis_compiler.h cmsis_armcc.h core_cm4.h}]"
    cd ${LIB_DIR}/Drivers/CMSIS/Include
    cp cmsis_version.h cmsis_compiler.h cmsis_armcc.h core_cm4.h mpu_armv7.h ${BASE}/CMSIS -r -v
}
make_Library() {
    cd  ${BASE}
    echo ""
    echo "make_Library"
    echo `ls ${LIB_DIR}/Drivers/STM32F4xx_HAL_Driver/`
    echo "cp ${LIB_DIR}/Drivers/STM32F4xx_HAL_Driver/{inc src}"
    #mkdir -p  ${BASE}/Library/inc  ${BASE}/Library/src
    cp ${LIB_DIR}/Drivers/STM32F4xx_HAL_Driver/Inc ${BASE}/Library/inc/ -r -v
    cp ${LIB_DIR}/Drivers/STM32F4xx_HAL_Driver/Src ${BASE}/Library/src/ -r -v
    #- 刪除 ll有關 : 名字 帶有 "_ll_" 的文件
    #find ${BASE}/Library | grep "_ll_" | xargs -i rm {}
    #- 刪除 template 有關 : 名字 帶有 "template" 的文件
    #find ${BASE}/Library | grep "template" | xargs -i rm {}

}

make_User () {
    cd ${BASE}
    echo ""
    echo "make_User"
    echo `ls ${LIB_DIR}/Projects/STM32F429I-Discovery/Templates/Src/*`
    echo "cp [Projects/STM32F429I-Discovery/Templates/Src/*]"
    cd ${LIB_DIR}/Projects/STM32F429I-Discovery/Templates/Src/
    cp main.c stm32f4xx_hal_msp.c stm32f4xx_it.c system_stm32f4xx.c ${BASE}/User -r -v
    cd ${BASE}
    cp ${LIB_DIR}/Projects/STM32F429I-Discovery/Templates/Src/* ${BASE}/User -r -v
    echo `ls ${LIB_DIR}/Projects/STM32F429I-Discovery/Templates/Inc/*`
    echo "cp [Projects/STM32F429I-Discovery/Templates/Inc/*]"
    cp ${LIB_DIR}/Projects/STM32F429I-Discovery/Templates/Inc/* ${BASE}/User -r -v
    mkdir ${BASE}/User/bsp/src ${BASE}/User/bsp/inc -p
}
echo "$[Project_Hal_STM32F4] is Creating."
make_dirs
get_LIB_DIR_PATH
make_CMSIS
make_Library
make_User
echo "$[Project_Hal_STM32F4] had been Created."
exit 0
-D: USE_HAL_DRIVER STM32F429xx


免責聲明!

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



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