新建stm32工程——基于标准库也就是库函数的方式
新建stm32工程
本文是在看过网上视频之后整理而成的文字,只可用于交流学习,不得用于商业用途。
使用库函数的方式我们需要准备一个STM32库函数的压缩
包“STM32F10x_StdPeriph_Lib_V3.5.0.zip”,其包含文件具体如图1所示。
其中:
- “
Libraries”是库函数的文件,后续新建工程会用到; - “
Project”为官方提供的工程示例和母版,以后使用库函数的时候可以参考; - “
Utilities”是STM32官方评估版的相关历程,这个评估板就是官方用SM32做的一个小电路板,用来测评STM32的,其包含的“STM32_EVAL”文件夹里面存放的就是这个小电路板的测评程序; - “
Release_Notes.html”是库函数发布文档; - “
stm32f10x_stdperiph_lib_um.chm”是使用手册,指导如何使用库函数。
现在正式新建一个给予标准库的工程:
1、 新建一个文件夹
比如命名为“my_stm32_projects”,用来存放所有的工程,
以后工程都存放在这个文件夹下,方便管理。
2、 打开keil5软件
点击“Project”→“New uvision Project”,如图2所示。

3、在弹出的界面
选择刚刚新建的文件夹“my_stm32_projects”,
在其中新建一个文件夹(命名为“stm32工程模板”)存放此次的工程,
然后将工程文件命名为“Project”,如图3所示。

4、 接下来选择器件型号
这里选择“STM32F103C8”,如图4所示。


5、 接下来弹出的界面
是keil软件的一个新建工程小助手,如图5所示。可以帮助我们快速新建工程,
这里我们暂时不用。

6、 到此为止工程就建好了
但这里工程文件空空如也,还不能直接使用.
我们还需要给它添加一些工程的必要文件。打开固件库文件夹,在这个路径
“.\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS \CM3\DeviceSupport\ST\STM32F10x\startup\arm”下都是STM32的启动文件,
如图6所示。
STM32程序就是从启动文件开始执行的。

7、复制所有启动文件
然后在“stm32工程模板”文件夹下新建一个文件夹“Start”,
将启动文件复制到“Start”文件夹下,如图7所示。


8、 打开路径
“. \STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\Device Support\ST\STM32F10x”,其中有三个文件。
“stm32f10x.h”是STM32的外设寄存器描述文件,它的作用就跟51单片机的头文件
REGX52.H一样,是用来描述STM32有哪些寄存器和它对应的地址的;
“system_stm32f10x.c”和“system_stm32f10x.h” 这两个system文件是用来配置时钟的,
STM32主频72MH2,就是system文件里的函数配置的。
把这三个文件也复制到“Start”文件夹下,如图8所示。

9、 添加内核寄存器描述文件
打开路径
“.\STM32F10x_StdPeriph_Lib_V3.5.0 \Libraries\CMSIS\CM3\CoreSupport”。
这两个cm3(Cortex-M3)文件就是内核的寄存器描述。
把这两个文件复制到“Start”文件夹下,如图9所示。
(这个STM32是内核和内核外围的设备组成的,而且这个内核的寄存器描述和外围设备的描述文件不是在一起的。)

到此为止,我们工程的必要文件就复制完成了。
10、 回到keil软件
然后再单击一下“Source Group1”,把这个组改一下名字,也叫Start,如图10所示。

接着右键,选择添加已经存在的文件到组里来,添加这些文件,如图11所示。

添加启动文件,此次我们添加“startup_stm32f10x_md.s”文件,如图12所示。

然后把剩余的.c和.h文件都添加进来,如图13所示。

“Start”文件夹中的文件都是STM32里最基本的文件,是不需要我们修改的。
我们添加进来即可。
最后我们还需要在工程选项里添加上这个文件夹的头文件路径,要不然软件是找不到
h文件的。我们点击这个魔术棒按钮,如图14所示。

打开工程选项,在CC++里,我到这个Include Paths栏。然后点击右边三个点的按
钮,在这里新建路径。然后再点三个点的按钮。把Start的路径添加递来,点击OK这
样就把这个文件实的头文件路径添加进来了,具体操作见如图15所示。

11、 接下来我们新建一个main文件
看看工程是否可以运行。回到工程文件夹,
新建一个文件夹“User”,main函数就存放在这个文件夹里。然后回到keil,在左
栏“Target1”上右键,点击“Add Group”,并重名为“User”,如图16所示。


然后在User上右键。点击添加新文件,如图17所示。

选择C文件,名字为“main”,存放路径为“user”,之后点击“Add”即可,如图18所示。

在这个main.c里,先右键插入头文件。选择stm32f10x.h,如图19所示。

写下一段代码,如图20所示。
注意, main函数是一个in型返回值,void参数的函数,还有文件的最后一行必须要
是空行,要不然会报警告。然后我们点击“Build”按钮(添加预定义,参见图29),编
译并建立工程。

这个工程目前还没有添加STM32的库函数,所以它还是一个基于寄存器开发的工
程。如集只用寄存器开发STM32。那工程建到这里就可以了。
12、接下来我们添加库函数
打开工程文件夹,在这里新建一个文件实,叫“Library”,用来存放库函数。接着打开
固件库的文件夹,打开Libraries,STM32标准外设驱动,具体路径为
“.\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\ STM32F10x_StdPeriph_Driver\src”
在“src”文件夹中都是库函数的源文件,将全部文件复制到工程文件下的“Library”文
件夹中,如图21所示。

然后打开
“.STM32F10x_StdPeriph_Lib_V3.5.0\Libraries \STM32F10x_StdPeriph_Driver\inc”,
这些是库函数的头文件,将全部文件复制到工程文件下的“Library”文件夹中,如图22所示。

13、 回到keil软件
同样在“Target”处右键。然后添加组,命名为“Library”,如图23所示。

14、 再右键添加已经存在的文件
打开“Library”,全选后点击“Add”添加,如图24所示。

但是对这个库函数来说,现在不能直接使用。
我们需要再添加一个文件,…我们打开固件库文件夹。打开
“. \STM32F10x_StdPeriph_Lib_V3.5.0 \Project\STM32F10x_StdPeriph_Templatee”,
可以看到stm32f10x_conf.h和两个it结尾的文件。
这个conf文件是用来配置库函数头文件的包含关系的,另外这里面困有个焦聚参数检置的函数定义。
这是所有库函数都需要的。两个it文件是用来存放中断函数的。把这三个文件复制到工程目录下的“User”文件夹中,如图25所示。


回到Keil软件,在左侧栏“User”右键添加已经存在的文件,把刚刚三个文件添加进来,如图26所示。

15、最后还需要一个宏定义
我们可以在这个头文件右键。打开文件,如图27所示,滑动到文件最下方。看到这个语句。
这是一个条件编译,如图28所示,其含义为如果定义了“USE_STDPERIPH_DRIVER”这
个字符串,下面这个indlude conh语句才有效。
我们需要复制一下这个字符串,然后打开工程选项,粘贴这个字符串,如图29所示,
这样才能包含标准外设库,也就是库函数。


最后添加头文件路径,把“User”“Library”目录路径都添加上,如图29所示。

至此,基于库函数的工程就创建好了。

浙公网安备 33010602011771号