一、新建工程
1、 STM32的开发方式
目前STM32的开发方式主要有基于寄存器的方式,基于标准库(库函数)的方式和基于HAL库的方式。
基于寄存器的方式是用程序直接配置寄存器,来达到想要的功能。这种方式最底层,最直接,效率会更高一些。但是由于STM32的寄存器复杂,寄存器太多,所以不推荐这种方式。
基于库函数的方式是使用ST官方提供的封装好的函数,通过这些函数来间接地配置寄存器。由于ST对寄存器封装的比较好,所以这种方式既能满足对寄存器的配置,对开发人员也比较友好,有利于提高开发效率。本课程采用基于库函数的开发方式。
基于HAL库的方式可以用图形化界面快速配置STM32, 但是这种方法隐藏了底层逻辑。推荐学习过标准库的开发方式之后,对这一种开发方式进行了解和学习。
2、 新建工程的步骤
1、建立工程文件夹,在Keil中新建工程(工程文件名称为Project,存放在一个文件夹下,对该工程文件的说明写在文件夹上),选择芯片型号(本次课程选用STM32F103C8T6,故选择STM32F103C8);
2、工程文件夹里建立Start,Library,User等文件夹,复制固件库中的文件到工程文件夹;
(1)、配置启动文件
打开“固件库”文件夹,打开Libraries → \rightarrow→ CMSIS → \rightarrow→ CM3 → \rightarrow→ DeviceSupport → \rightarrow→ ST → \rightarrow→ STM32F10x → \rightarrow→ startup → \rightarrow→ arm,将文件夹中的文件复制到新建的Start文件夹中。
将启动文件导入到Keil的工程中时,启动文件只能导入一个。课程所用型号需要选择startup_stm32f10x_md.s
文件。
回到STM32F10x文件夹,将stm32f10x.h、system_stm32f10x.c 、system_stm32f10x.h复制到Start文件夹中,并导入到工程组Start中(stm32f10x.h就是STM32外设寄存器描述文件,它的作用就同51单片机的头文件REGX52.H一样,是用来描述STM32有哪些寄存器和它对应的地址的)。
(2)、配置内核寄存器的描述文件
打开CM3 → \rightarrow→ CoreSupport,core_cm3.h、core_cm3.c就是内核的寄存器描述文件(其中还包含了一些内核的配置函数),同样将它们复制到Start文件夹中,并导入到工程组Start中。
(3)、配置User文件夹
在Keil工程文件中新建User文件夹,添加main.c文件(注意:添加main.c文件时的路径要选择User文件夹,否则默认放在文件夹外),这时对main.c文件进行编译检查,如果没有报错和警告说明工程建立成功。 至此,基于寄存器开发的工程就建立完成了。
在在“固件库”文件夹中打开Project → \rightarrow→ STM32F10x_StdPeriph_Template,其中stm32f10x_conf.h是用来配置库函数头文件的包含关系的,其中还包含用来参数检查的函数定义,是所有库函数都需要的。此外stm32f10x_it.h ,stm32f10x_it.c是用来存放中断函数的。将这三个文件复制下来,粘贴到工程的User文件夹中
配置库函数Library文件夹
(4)、在工程文件夹中新建Library文件夹。
在“固件库”文件夹中打开Libraries → \rightarrow→ STM32F10x_StdPeriph_Driver(STM32标准外设驱动)→ \rightarrow→ src,其中的文件就是库函数的源文件,其中misc.c是内核的库函数,其他都是内核外的外设库函数。将其中所有文件复制到Library文件夹中。
在Libraries → \rightarrow→STM32F10x_StdPeriph_Driver(STM32标准外设驱动)→ \rightarrow→ inc 中是库函数的头文件,将其中所有文件复制到Library文件夹中。
3、工程里对应建立Start,Library,User等同名称的分组(Group),然后将文件夹内的文件添加到对应的分组里;
4、点击工程选项(魔术棒)、C/C++、在Include Path内声明所有包含头文件的文件夹(Start,Library,User);
5、点击工程选项、C/C++、在Define内定义USE_STDPERIPH_DRIVER(宏定义,意为使用标准外设驱动)这是库函数的条件编译,使用库函数开发就必须要定义;
- 该宏定义在头文件
stm32f10x.h
中(8296行) - 点击工程选项、Debug中下拉列表选择对应的调试器(本次课程使用ST-Link进行调试,故选择ST-Link Debugger),点击Settings,在Flash Download里勾选Reset and Run,勾选上这一项之后,下载的程序会立马复位并执行,省去了在开发板上手动按下复位的步骤。