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