前言
在初入stm32学习时,第一步就是创建工程,需要的就是各种不同的启动文件,那f4系列的芯片这么多,如何去选择一款对应的启动文件呢,基于加深自己的记忆,写下了这篇文章
标准库
stm32官方提供f4开发的标准库,本文以v1.8.0为例
在STM32F4xx_DSP_StdPeriph_Lib_V1.8.0\Libraries\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm
此文件下提供了所有的启动文件为.s格式(汇编语言)
启动文件内容简介
- 开辟堆栈空间
- 中断向量表初始化
- 复位程序
- 中断服务程序
- 初始化堆栈
启动文件
芯片对应
- 本次学习使用的是STM32f401RET6芯片
- 在stm32f4xx.h文件中寻找该对应芯片的启动文件
启动文件
- startup_stm32f40_41xxx.s
- STM32F405RG, STM32F405VG, STM32F405ZG, STM32F415RG, STM32F415VG, STM32F415ZG,
STM32F407VG, STM32F407VE, STM32F407ZG, STM32F407ZE, STM32F407IG, STM32F407IE,
STM32F417VG, STM32F417VE, STM32F417ZG, STM32F417ZE, STM32F417IG and STM32F417IE Devices
- STM32F405RG, STM32F405VG, STM32F405ZG, STM32F415RG, STM32F415VG, STM32F415ZG,
- startup_stm32f427_437xx.s
- STM32F427VG, STM32F427VI, STM32F427ZG, STM32F427ZI, STM32F427IG, STM32F427II,
STM32F437VG, STM32F437VI, STM32F437ZG, STM32F437ZI, STM32F437IG, STM32F437II Devices
- STM32F427VG, STM32F427VI, STM32F427ZG, STM32F427ZI, STM32F427IG, STM32F427II,
- startup_stm32f429_439xx.s
- STM32F429VG, STM32F429VI, STM32F429ZG, STM32F429ZI, STM32F429BG, STM32F429BI,
STM32F429NG, STM32F439NI, STM32F429IG, STM32F429II, STM32F439VG, STM32F439VI,
STM32F439ZG, STM32F439ZI, STM32F439BG, STM32F439BI, STM32F439NG, STM32F439NI,
STM32F439IG and STM32F439II Devices
- STM32F429VG, STM32F429VI, STM32F429ZG, STM32F429ZI, STM32F429BG, STM32F429BI,
- startup_stm32f401xxx.s
- STM32F401CB, STM32F401CC, STM32F401RB, STM32F401RC, STM32F401VB, STM32F401VC,
STM32F401CD, STM32F401RD, STM32F401VD, STM32F401CExx, STM32F401RE and STM32F401VE Devices
- STM32F401CB, STM32F401CC, STM32F401RB, STM32F401RC, STM32F401VB, STM32F401VC,
- startup_stm32f410xx.s
- STM32F410Tx, STM32F410Cx and STM32F410Rx
- startup_stm32f411xe.s
- STM32F411CC, STM32F411RC, STM32F411VC, STM32F411CE, STM32F411RE and STM32F411VE Devices
- startup_stm32f412xg.s
- STM32F412CEU, STM32F412CGU, STM32F412ZET, STM32F412ZGT, STM32F412ZEJ, STM32F412ZGJ,
STM32F412VET, STM32F412VGT, STM32F412VEH, STM32F412VGH, STM32F412RET, STM32F412RGT,
STM32F412REY and STM32F412RGY Devices
- STM32F412CEU, STM32F412CGU, STM32F412ZET, STM32F412ZGT, STM32F412ZEJ, STM32F412ZGJ,
- startup_stm32f413_423xx.s
- STM32F413CGU, STM32F413CHU, STM32F413MGY, STM32F413MHY, STM32F413RGT, STM32F413VGT,
STM32F413ZGT, STM32F413RHT, STM32F413VHT, STM32F413ZHT, STM32F413VGH, STM32F413ZGJ,
STM32F413VHH, STM32F413ZHJ, STM32F423CHU, STM32F423RHT, STM32F423VHT, STM32F423ZHT,
STM32F423VHH and STM32F423ZHJ devices
- STM32F413CGU, STM32F413CHU, STM32F413MGY, STM32F413MHY, STM32F413RGT, STM32F413VGT,
- startup_stm32f446xx.s
- STM32F446MC, STM32F446ME, STM32F446RC, STM32F446RE, STM32F446VC, STM32F446VE, STM32F446ZC
and STM32F446ZE Devices
- STM32F446MC, STM32F446ME, STM32F446RC, STM32F446RE, STM32F446VC, STM32F446VE, STM32F446ZC
- startup_stm32f469_479xx.s
- STM32F479AI, STM32F479II, STM32F479BI, STM32F479NI, STM32F479AG, STM32F479IG, STM32F479BG,
STM32F479NG, STM32F479AE, STM32F479IE, STM32F479BE, STM32F479NE Devices
- STM32F479AI, STM32F479II, STM32F479BI, STM32F479NI, STM32F479AG, STM32F479IG, STM32F479BG,
宏定义
- #define STM32F40_41xxx
- #define STM32F427_437xx
- #define STM32F429_439xx
- #define STM32F401xx
- #define STM32F410xx
- #define STM32F411xE
- #define STM32F412xG
- #define STM32F413_423xx
- #define STM32F446xx
- #define STM32F469_479xx
使用
加入启动文件后我们要在keil软件中使用这些宏
点开options按钮到c/c++界面,在define中添加STM32F401xx,USE_STDPERIPH_DRIVER
前面的替换为自己所使用芯片的宏名,后面的代表可以使用官方的标准库外设文件,中间用逗号隔开,注意不要用中文逗号
结束
这就是关于启动文件的内容了,接下来就是添加一些内核文件,外设库文件等等,就建立好一个新工程了
自知水平不足,有错误的地方请各位大佬指正。