一.所需文件说明
1.启动文件startup_xxxx.s
-
作用 :初始化堆栈指针、复位向量、中断向量表,执行
SystemInit()
后跳转到main()
。 -
位置 :
Libraries/CMSIS/Device/ST/STM32Fxx/Source/Templates/arm/
-
文件名:
-
startup_stm32f10x_ld.s
(小容量,如 F103C8) -
startup_stm32f10x_md.s
(中容量,如 F103RC) -
startup_stm32f10x_hd.s
(大容量,如 F103ZE) -
其他型号(如 F4/F7)路径类似,需匹配芯片型号。
-
详细介绍可以参考下面的博主
STM32的启动过程 --- startup_xxxx.s文件解析(MDK和GCC双环境)_stm32 .s文件-CSDN博客
2. CMSIS 核心文件
-
作用:提供 Cortex-M 内核抽象层(中断、寄存器定义等)。
-
关键文件:
-
core_cm3.c
/core_cm4.c
(根据内核选择)
位置:Libraries/CMSIS/Include/
-
system_stm32f10x.c
(初始化时钟、Flash 等)
位置:Libraries/CMSIS/Device/ST/STM32F10x/Source/Templates/
-
头文件:
core_cm3.h
、system_stm32f10x.h
-
详细介绍可以参考下面的博主
3. 标准外设库文件
-
作用:外设驱动(GPIO、USART、SPI 等)。
-
位置 :
Libraries/STM32F10x_StdPeriph_Driver/
-
源文件 :
src/
目录(如stm32f10x_gpio.c
,stm32f10x_rcc.c
) -
头文件 :
inc/
目录(如stm32f10x_gpio.h
,stm32f10x_rcc.h
)
-
根据开发需求添加相应的外设库文件
4. 用户代码
-
必要文件:
-
main.c
:主程序入口。 -
stm32f10x_it.c
:中断服务函数(默认由库提供模板)。
位置:Libraries/STM32F10x_StdPeriph_Driver/
或项目自定义目录 -
用户自定义模块(如
led.c
,uart.c
)。
-
二. 创建工程(STM32f030K6为例子)
1.去官网下载相应的标准外设库文件
STM32标准外设软件库 - 意法半导体STMicroelectronics

点击自己需要的类型

后面的登录什么的就自己操作了
2.新建文件夹

文件夹里面新建四个文件夹
3.放置相应的文件
Start文件夹
位置 :Libraries/CMSIS/Device/ST/STM32Fxx/Source/Templates/arm/

Libraly文件夹
我的习惯是直接将Libraly文件下的CMSIS和STM32F0xx_StdPeriph_Driver复制到自己的文件夹下


User文件夹
打开文件夹里面的示例

我打开一个比较简单的GPIO


复制这五个到自己的User下面
MDK文件夹

然后选择自己相应的芯片点击OK即可
4.keil操作

添加四个组

添加定义 USE_STDPERIPH_DRIVER,STM32F030,


添加四个文件路径

添加文件到对应组里面


Start添加启动文件

CMSIS添加 system_stm32f0xx.c

User添加三个文件

FWLIB文件是存放外设文件的,编程所需什么文件就添加什么文件,这里我就不添加了

修改编译配置

将主函数删除内容编译没有错误就OK了