创建STM32F103工程模板
创建一个目录作为STM32F103的工程目录,目录名可命名为STM32F103C8T6_Template。
STM32F103C8T6_Template下新建目录结构如下。
APP、Config、Drivers、Hardware、Middlewares、Projects、Users。
下面是对各个目录的说明:
-
App:
存放用户应用程序代码,
-
子目录:
-
include:
存放App.h等接口文件,供main函数调用
-
-
-
Config:
存放各种配置文件,包含bsp_config.h或app_config.h等
bsp_config.h:定义各个片上外设及硬件的端口及引脚。模板工程可留空。
app_config.h:定义app的各种参数,及初始化配置。模板工程可留空。
-
Drivers:
存放STM32F103的标准库或hal库,本模板使用标准库搭建
-
子目录
-
STM32F10x_StdPeriph_Driver
STM32F103的标准库
-
CMSIS
微控制器软件接口标准
-
BSP
基于STM32F103的片上外设板级支持包,提供统一的接口,以供Hardware或上层应用调用。
-
子目录
-
include:
存放bsp.h及bsp_conf.h等bsp接口文件
bsp.h:引用stdbool.h等标准库及stm32f10x.h及bsp_config.h
bsp_conf.h:引用自己定义的bsp_usart.h、bsp_gpio.h、bsp_dma.h等接口,供上层模块调用,模板工程可留空。
-
-
-
SYSTEM
存放delay、sys、usart等模块,用于自定义时钟树、实现阻塞延时等。
sys.h:引用bsp.h接口
-
-
-
Hardware:
存放各种硬件模块,包含led、rs485、ds18b20、key、oled、lcd等
-
子目录
-
include
存放hardware.h及hardware_conf.h等接口文件
hardware.h:引用bsp_conf.h、bsp_config.h、sys.h、、delay.h等SYSTEM接口
hardware_conf.h:引用led、rs485、ds18b20、key、oled、lcd等接口,供上层模块调用。
-
-
-
Middlewares:
存放各种中间件,包含freertos,lvgl,fatfs等
-
Projects:
存放MDK-ARM等IDE的工程文件。
-
Users:
存放main.c、stm32f10x_conf.h、stm32f10x_it等文件
建立好的路径如下图所示:

使用keil等ide建立工程,并配置好分组,如下所示

包含路径如下所示:

bsp.h代码如下:
/** ************************** Copyright (c) **********************************
*
*
*
* ------------------------------File Info-------------------------------------
* @file: bsp.h
* @author: ${author.body}
* @date: 2025-06-25
* @version: V0.0
* @brief:
*
* ----------------------------------------------------------------------------
* @modified:
* @date: 2025-06-25
* @version: V0.0
* @description:
* @note:
* ----------------------------------------------------------------------------
* @copyright:
* ************************************************************************* */
#ifndef __BSP_H
#define __BSP_H
#ifdef __cplusplus
extern "C" {
#endif
/** ***************************************************************************
* @brief:包含头文件
* ************************************************************************* */
#include <stdint.h>
#include <stdbool.h>
#include <string.h>
#include "stm32f10x.h"
#include "bsp_config.h"
/** ***************************************************************************
* @brief:外部宏定义
* ************************************************************************* */
/** ***************************************************************************
* @brief:外部数据结构
* ************************************************************************* */
#pragma pack(1) //1字节对齐
#pragma anon_unions //开启匿名结构、联合
#pragma no_anon_unions //关闭匿名结构、联合
#pragma pack() //取消字节对齐
/** ***************************************************************************
* @brief:接口数据声明
* ************************************************************************* */
/** ***************************************************************************
* @brief:接口函数声明
* ************************************************************************* */
#ifdef __cplusplus
}
#endif
#endif // __BSP_H
/** ***************************************************************************
* End Of File
* 在烧写的时候是FLASH中的被占用的空间为: Code + RO-data + RW-data
* 程序运行的时候,芯片内部RAM使用的空间为: RW-data + ZI-data
* ************************************************************************* */
bsp_conf.h代码
/** ************************** Copyright (c) **********************************
*
*
*
* ------------------------------File Info-------------------------------------
* @file: bsp_conf.h
* @author: ${author.body}
* @date: 2025-06-25
* @version: V0.0
* @brief:
*
* ----------------------------------------------------------------------------
* @modified:
* @date: 2025-06-25
* @version: V0.0
* @description:
* @note:
* ----------------------------------------------------------------------------
* @copyright:
* ************************************************************************* */
#ifndef __BSP_CONF_H
#define

最低0.47元/天 解锁文章
1579

被折叠的 条评论
为什么被折叠?



