最近工作中碰到不少嵌入式底层得东西,所以想抽时间学学嵌入式得底层了。stm32这款产品很友好,入门不难,外设很全。所以准备入手学习了。网上看了很多,很杂,现在总结一下入门的几个正确姿势。**
1.stm32入门前准备
* 器件准备 stm32板子一枚,我用的是stm32f103c8t610块钱一枚。下载器,用的是STLINK V2,10快一枚,全系stm都支持。若干杜邦线,led灯- 软件准备
- 编辑,下载,调试于一体的工具keil5
- 下载器驱动
- keil5所需要的stm32f10系列包
- 软件库,包括启动文件,库封装等等
- 工程文件夹介绍
- 怎么添加源文件
- 添加头文件路径
- 配置调试下载工具
- 编译,下载,运行
软件准备
1. 开发工具下载安装 keil5这里就不多介绍,也就是MDK,网上都有下载安装方法。 2. 下载器 下载器我用的STLINKV2,支持stm全系列。 3. 开发环境包安装 keil5所需要的包,这里用的是Keil.STM32F1xx_DFP.1.0.5.pack,我觉得这更像是keil5工具编译所需的包。这相当于开发环境搭好了。(刚开始我以为安装了这一个包之后,建立一个main就可以运行了。其实还差的远) ![](https://img2018.cnblogs.com/blog/1532705/201911/1532705-20191109095835812-1601473530.png) 4. 软件库 固件包:STM32 固件库 V3.5 文件包: STM32F10x_StdPeriph_Lib_V3.5.0 软件开发所需要的外设封装库,启动文件,内核文件都在这个包里面。后面详细介绍。 ##工程建立我的工程分为四个文件夹USER,STARTUP,LIB,OBJ
LIB:
官方标准外设库,在STM32F10x_StdPeriph_Lib_V3.5.0/Libraries目录下有 CMSIS 和 STM32F10x_StdPeriph_Driver 两个目录,这两个目录包含固件库核心的所有子文件夹和文件。将STM32F10x_StdPeriph_Driver的inc和src目录全部copy到我们建立的LIB文件夹下。
STARTUP:
core_cm3.c 和 core_cm3.h 文件位于LibrariesCMSISCM3CoreSupport 目录下面的,这个就是CMSIS核心文件,提供进入M3内核接口,这是ARM公司提供,对所有 CM3 内核的芯片都一样。copy进STARTUP。
和 CoreSupport 同一级还有一个 DeviceSupport 文件夹。DeviceSupportSTSTM32F10xt 文件夹下面主要存放一些启动文件以及比较基础的寄存器定义以及中断向量定义的文件。DeviceSupportSTSTM32F10x中有system_stm32f10x.c,system_stm32f10x.h 以及 stm32f10x.h 文件。system_stm32f10x.c 和对应的头文件 system_stm32f10x.h 文件的功能是设置系统以及总线时钟,这个里面有一个非常重要的 SystemInit()函数,这个函数在我们系统启动的时候都会调用。用来设置系统的整个时钟系统。stm32f10x.h 这个文件就相当重要了,只要你做 STM32 开发,你几乎时刻都要查看这个文件相关的定义。这个文件打开可以看到,里面非常多的结构体以及宏定义。 这个文件里面主要是系统寄存器定义申明以及包装内存操作, 对于这里是怎样申明以及怎样将内存操作封装起来的。这三个文件也copy进来。
在 DeviceSupportSTSTM32F10x 同一级还有一个 startup 文件夹,里面存放的是启动文件,我选择的是startup_stm32f10x_md.s
startup_stm32f10x_ld.s: 适用于小容量 产品 FLASH≤32K
startup_stm32f10x_md.s : 适用于中等容量产品 64K≤FLASH≤128K
startup_stm32f10x_hd.s: 适用于大容量产品 256K≤FLASH
USER:
用户源代码文件
stm32f10x_it.c,stm32f10x_it.h 以及 stm32f10x_conf.h 等文件。stm32f10x_it.c 里面是用来编写中断服务函数,stm32f10x_conf.h就是你工程需要哪些库打开就行。你的文件需要包含这个文件就可以了。这三个文件也是在固件库里面找的。这里不详细介绍了。
OBJ:
keil5创建工程选择存储的文件夹。在keil5 project->New uvision project创建工程的时候选择这个文件夹,然后输入你的工程名就可以创建成功工程了。
keil5几个关键配置
添加工程源文件,注意添加的时候启动文件是.s也需要添加进来哦
这是我建立的工程结构
添加工程所需头文件
debug,下载设置
至此你就可以在USER目录下新建一个main.c,然后开启你的stm32之旅了,有什么问题欢迎留言。