当前位置: 首页 > article >正文

【STM32】从新建一个工程开始:STM32 新建工程的详细步骤

STM32 开发通常使用 Keil MDKSTM32CubeMXIAR 等工具来创建和管理工程。此处是 使用 Keil MDK5 + STM32CubeMX 创建 STM32 工程的详细步骤。

新建的标准库工程文件已上传至资源中,下载后即可直接使用。

标准库新建 STM32 工程的基本目录结构:STD_STM32F103RC_Demo

1. 新建 STM32 工程的基本目录结构

在 STM32 工程中,通常会有以下几个文件夹:
工程构架
新建工程

外设库(FWLib):存放 STM32 官方提供的驱动库,例如 HAL 库或标准外设库(StdPeriph Lib
用户文件(USER):存放用户编写的代码,如 main.c
工程文件(MDK-ARM):存放 Keil 相关的 *.uvprojx 工程文件
核心文件(COER):CMSIS 核心支持库
编译中间文件(OBJ):存放编译过程中生成的 .o 文件
系统文件(SYSTEM):存放 STM32 系统初始化相关的 system_stm32f10x.c

2. 使用 STM32CubeMX 生成工程

⭐ 2.1 安装必要的软件
Keil MDK-ARM(用于编写和编译代码)
STM32CubeMX(用于生成初始化代码)
ST-Link 驱动 和 FlyMcu(用于调试和烧录)

⭐ 2.2 创建 STM32CubeMX 工程

  1. 打开 STM32CubeMX,点击 “New Project
  2. 选择目标 STM32 芯片(例如 STM32F103C8T6)
  3. 配置文件:时钟(RCC)、串口(USART)、GPIO、定时器(TIM)等外设
  4. 选择代码生成方式
    • 库类型:HAL 库(推荐)或 LL 库
    • IDE 选择:Keil MDK-ARM
  5. 点击“Generate Code” 生成工程
    流程一
    流程二
    流程三
标准库移植 STM32F10x_StdPeriph_Lib_V3.5.0:

标准库目录:
在这里插入图片描述
移植第一 步在 COER 文件夹下:

G:\(stm32)\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport
文件夹下的文件:

在这里插入图片描述
文件夹:

G:\(stm32)\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm
添加文件:startup_stm32f10x_hd.s   和    startup_stm32f10x_md.s

在这里插入图片描述
移植第二步在 USER 文件夹下:
进入标准库的文件夹中:

G:\(stm32)\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x

在这里插入图片描述
在标准库的文件夹中:

G:\(stm32)\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template

在这里插入图片描述

移植第三步在 FWLib 文件夹下:

G:\(stm32)\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver
将 文件夹 inc 和 src 复制到工程目录的 FWLib 下

在这里插入图片描述
第四步 在 Keil uVision5 中新建的工程目录中,将标准库的 .c.h 文件分别加入在工程中:
在这里插入图片描述
在这里插入图片描述

以上。便添加完成了标准库中的所有 .c 文件,之后点击魔法棒,开始添加 .h 文件。

第一步:改为V5版本:
在这里插入图片描述
第二步:进入C/C++目录下新增目录:

\COER
\FWLib\inc
\USER

在这里插入图片描述
在这里插入图片描述
然后在 Define 中添加宏:

STM32F10X_HD,USE_STDPERIPH_DRIVER

点击 OK 结束。以上,便完成了标准库的前置配置。接下来我们测试一下代码是否能够调试与运行↓:

在这里插入图片描述
配置一下,将生成文件的目录放在OBJ文件夹下:
在这里插入图片描述

LED 亮灭:写一段点亮 LED 灯的代码:

main.c 中编写代码:

int	 main(void)
{
		
	GPIO_InitTypeDef GPIO_InitStruct;
	
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);

	GPIO_InitStruct.GPIO_Pin = GPIO_Pin_7;
	GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;
	GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;

	GPIO_Init(GPIOC, &GPIO_InitStruct);
	GPIO_WriteBit(GPIOC, GPIO_Pin_7, Bit_RESET);

}
编译工程
  • 点击“Build”按钮(F7)编译代码
  • 若无报错,生成 *.hex 文件

然后点击编译:此时会将代码生成至OBJ文件夹下:
打开 FlyMcu.exe
在这里插入图片描述
在这里插入图片描述
这里按一下开发板上的复位键(记得此时开发板的按钮开关模式为 ISR)

开发板的 ISR(Interrupt Service Routine)和 RUN(运行模式)

ISR(中断服务程序) 是 当外部或内部事件发生时,CPU 自动执行的特定函数,用于响应和处理中断事件。
📌 1.1 ISR 主要用于:
	外部中断(按键、传感器触发)
	定时器中断(周期性任务、PWM 计时)
	串行通信中断(USART、I2C、SPI 数据接收)
	DMA 传输完成中断
	异常处理(如硬件故障)
	
✅ 1.2 ISR 的运行流程
	1.中断发生(如 GPIO 触发、定时器超时)。
	2.CPU 停止当前任务,保存上下文(寄存器、堆栈)。
	3.跳转到 ISR 处理程序,执行中断任务。
	4.ISR 结束,恢复原任务,继续运行。

在嵌入式系统中,RUN 模式指的是 MCU 正常运行的状态。
📌 MCU 可能有多种运行模式,如:
	RUN 模式(正常运行)
	SLEEP 模式(低功耗模式,CPU 暂停但外设运行)
	STOP 模式(更低功耗,RAM 保持但 CPU 停止)
	STANDBY 模式(最低功耗,RAM 断电)

流程四
以上。代码便烧录成功了。然后将按钮切换至 RUN 运行模式,
请添加图片描述
测试成功。以上,是标准库新建工程的流程。

以上。仅供学习与分享交流,请勿用于商业用途!转载需提前说明。

我是一个十分热爱技术的程序员,希望这篇文章能够对您有帮助,也希望认识更多热爱程序开发的小伙伴。
感谢!


http://www.kler.cn/a/591544.html

相关文章:

  • vue:组件的使用
  • Asp.net Core API 本地化
  • 淘宝/天猫获得淘宝商品评论 API 返回值说明
  • 基于Netty实现高性能HTTP反向代理
  • 春秋云境刷题1
  • 使用OBS进行webRTC推流参考
  • Spring Boot 启动顺序
  • 矩阵分解和线性方程组求解算法介绍
  • 游戏引擎 Unity - Unity 顶部菜单栏(文件、编辑、资源、游戏对象、组件、服务、窗口、帮助)
  • 如何通过Python实现自动化任务:从入门到实践
  • ubuntu24.04安装VMware Tools
  • hadoop集群配置-rsync命令同步文件夹
  • 分享一个项目中遇到的一个算法题
  • SSH反向隧道
  • flutter 专题 七十七 Flutter 数字增加动画
  • MySQL 8主从复制配置最佳实践
  • 2025蓝桥杯JAVA编程题练习Day6
  • Linux的root用户 、用户组
  • Cursor与Blender-MCP生成3D模型
  • YunSDR AIR:从架构革新到智能融合的演进之路