STM32部分:2-2、传统手动创建工程方法

发布于:2025-05-09 ⋅ 阅读:(10) ⋅ 点赞:(0)

飞书文档https://x509p6c8to.feishu.cn/wiki/CUvuwtUBQihnMKkpuc5cv3lgnkh

传统手动创建工程方法非常繁琐,现阶段已经不需要使用,了解即可。

HAL库工程手工搭建

一、下载STM32对应系列的HAL库支持包

1.1、手动下载库

https://www.st.com/zh/embedded-software/stm32cubef1.html

1.2、使用STM32CubeMX安装的支持包

STM32CubeMX安装完成后,创建工程时,也会自动安装对应系列的库,安装路径在Update Settings的Firmware Repository中

二、新建工程文件夹

新建文件夹Template,在该文件夹内新建CoreDriverMDK-ARM三个子文件夹

Core  Core内部新建IncSrc两个文件夹,存放自己编写的程序文件和STM32相关的头文件、c文件Core/Inc

HAL库的“STM32Cube_FW_F1_Vxxx\Projects\STM32F103RB-Nucleo\Templates\Inc”目录下文件复制到本文件夹下:
main.h,stm32f1xx_hal_conf.h,stm32f1xx_it.h

Core/Src

HAL库的“STM32Cube_FW_F1_Vxxxx\Projects\STM32F103RB-Nucleo\Templates\Src”目录下文件复制到本文件夹下:
main.c,stm32f1xx_hal_msp.c,stm32f1xx_it.c,system_stm32f1xx.c

Drivers存放HAL库相关外设文件

复制以下两个文件夹到Drivers中,可以压缩后再复制
HAL库的STM32Cube_FW_F1_Vxxxx\Drivers\CMSIS文件夹
HAL库的STM32Cube_FW_F1_Vxxxx\Drivers\STM32F1xx_HAL_Driver文件夹

STM32Cube_FW_F1_Vxxxx\Drivers\CMSIS
是ARM Cortex微控制器软件接口标准。它包括了DSP库、Cortex-M内核及其设备文件、微控制器专用头文件、启动文件以及专用系统文件。

STM32Cube_FW_F1_Vxxxx\Drivers\BSP
这通常包含与特定开发板或硬件平台相关的驱动程序和配置。

STM32Cube_FW_F1_Vxxxx\Drivers\STM32F1xx_HAL_Driver
文件包含了与STM32F1系列微控制器的各种外设(如GPIO、UART、SPI、I2C等)相关的驱动程序。这些驱动程序通常以源文件和头文件的形式存在,并提供了用于控制和管理这些外设的API(应用程序接口)。例如,stm32f10x_gpio.c和stm32f10x_gpio.h文件分别包含了GPIO寄存器的操作函数和相关的宏定义。

MDK-ARM存放MDK工程相关文件

MDK工程文件

三、新建MDK工程

打开Keil-MDK,新建工程(Project-new uVersion Project),保存在“Template\MDK-ARM”目录下,工程名称可以根据自己的项目命名。

然后根据项目使用的CPU具体型号来选择选择芯片,这里使用STM32F103RC。

打开Manage Project Items窗口,进行如下设置

添加MDK-ARM、Driver、Core

Groups MDK-ARM中,添加启动文件startup_stm32f103xe.s

打开"Template\Drivers\CMSIS\Device\ST\STM32F1xx\Source\Templates\arm",添加startup_stm32f103xe.s

这里根据不同芯片容量大小选择,STM32F103RC是大容量(芯片手册),所以选择hd后缀的文件。

这是ST提供的4个启动文件,分别适用于不同容量的STM32芯片。
这4个文件为:
startup_stm32f103x6.s
startup_stm32f103xb.s
startup_stm32f103xe.s
startup_stm32f103xg.s
其中,x6.s适用于小容量 产品;xb.s适用于中等容量产品;xe适用于大容量产品;xg适用于超大容量产品
这里的容量是指FLASH的大小.判断方法如下:
小容量:16K<=FLASH≤32K
中容量:64K≤FLASH≤128K
大容量:256K≤FLASH<=512k
超大容量:768K≤FLASH<=1024K

startup_stm32f103xe.s是针对STMicroelectronics的STM32F103系列微控制器的启动代码。
它是一个汇编语言文件,包含了处理器的初始化和启动代码,以及一些中断处理程序。
当系统上电或复位时,处理器会首先执行该文件中的代码,以确保系统能够正确地启动。

Groups Drivers中,添加Template\Drivers\STM32F1xx_HAL_Driver\Src中需要用到的外设.c文件,用到什么加什么,这部分文件是STM32 HAL库的外设驱动文件。

无需全部添加,因为有一部分是模板文件,添加了会报重定义错误。

Groups Core中,添加Template\Core\Src下所有.c文件

其中
main.c
是程序入口。

stm32f1xx_hal_msp.c
MSP(
MCU support package),它的作用是进行 MCU 级别的硬件初始化设置。

stm32f1xx_it.c
中断相关处理函数。

system_stm32f1xx.c
用于启动和初始化STM32F1xx系列微控制器,初始化系统时钟、系统时基和其他外设。它包含了一些重要的函数,例如SystemInit()、SystemCoreClockUpdate()和SysTick_Config()等。

添加宏

USE_HAL_DRIVER 宏:为了让 stm32f1xx.h 包含 stm32f1xx_hal_conf.h 这个头文件

STM32F103xE宏:为了告诉 STM32HAL 库,我们使用的芯片类型是 STM32 型号是大容量的,使 STM32HAL 库根据我们选定的芯片型号来配置。

USE_HAL_DRIVER,STM32F103xE


 

添加头文件路径


 

设置C99标准

删除main.h中的“#include "stm32f1xx_nucleo.h"”,我们不需要引入ST官方开发板套件的相关代码。

最后编译即可。

注意:此工程仅演示,无需烧录到板卡,烧录可能会导致SWD调试口被关闭,需要烧录时按复位按键进行恢复,详见QA文档找不到SWD设备部分。


网站公告

今日签到

点亮在社区的每一天
去签到