本文是在看过网上视频之后整理而成的文字,只可用于交流学习,不得用于商业用途。
使用库函数的方式我们需要准备一个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
”是使用手册,指导如何使用库函数。现在正式新建一个给予标准库的工程:
比如命名为“my_stm32_projects
”,用来存放所有的工程,
以后工程都存放在这个文件夹下,方便管理。
keil5
软件点击“Project”
→“New uvision Project
”,如图2所示。
选择刚刚新建的文件夹“my_stm32_projects”,
在其中新建一个文件夹(命名为“stm32工程模板”)存放此次的工程,
然后将工程文件命名为“Project”,如图3所示。
这里选择“STM32F103C8
”,如图4所示。
是keil软件的一个新建工程小助手,如图5所示。可以帮助我们快速新建工程,
这里我们暂时不用。
但这里工程文件空空如也,还不能直接使用.
我们还需要给它添加一些工程的必要文件。打开固件库文件夹,在这个路径
“.\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS \CM3\DeviceSupport\ST\STM32F10x\startup\arm
”下都是STM32的启动文件,
如图6所示。
STM32程序就是从启动文件开始执行的。
然后在“stm32工程模板”文件夹下新建一个文件夹“Start
”,
将启动文件复制到“Start
”文件夹下,如图7所示。
“. \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所示。
打开路径
“.\STM32F10x_StdPeriph_Lib_V3.5.0 \Libraries\CMSIS\CM3\CoreSupport
”。
这两个cm3(Cortex-M3)文件就是内核的寄存器描述。
把这两个文件复制到“Start”文件夹下,如图9所示。
(这个STM32是内核和内核外围的设备组成的,而且这个内核的寄存器描述和外围设备的描述文件不是在一起的。)
到此为止,我们工程的必要文件就复制完成了。
然后再单击一下“Source Group1”,把这个组改一下名字,也叫Start,如图10所示。
接着右键,选择添加已经存在的文件到组里来,添加这些文件,如图11所示。
添加启动文件,此次我们添加“startup_stm32f10x_md.s
”文件,如图12所示。
然后把剩余的.c和.h文件都添加进来,如图13所示。
“Start
”文件夹中的文件都是STM32里最基本的文件,是不需要我们修改的。
我们添加进来即可。
最后我们还需要在工程选项里添加上这个文件夹的头文件路径,要不然软件是找不到
h文件的。我们点击这个魔术棒按钮,如图14所示。
打开工程选项,在CC++里,我到这个Include Paths栏。然后点击右边三个点的按
钮,在这里新建路径。然后再点三个点的按钮。把Start的路径添加递来,点击OK这
样就把这个文件实的头文件路径添加进来了,具体操作见如图15所示。
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。那工程建到这里就可以了。
打开工程文件夹,在这里新建一个文件实,叫“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所示。
同样在“Target”处右键。然后添加组,命名为“Library
”,如图23所示。
打开“Library”,全选后点击“Add”添加,如图24所示。
但是对这个库函数来说,现在不能直接使用。
我们需要再添加一个文件,…我们打开固件库文件夹。打开
“. \STM32F10x_StdPeriph_Lib_V3.5.0 \Project\STM32F10x_StdPeriph_Templatee
”,
可以看到stm32f10x_conf.h和两个it结尾的文件。
这个conf
文件是用来配置库函数头文件的包含关系的,另外这里面困有个焦聚参数检置的函数定义。
这是所有库函数都需要的。两个it
文件是用来存放中断函数的。把这三个文件复制到工程目录下的“User
”文件夹中,如图25所示。
回到Keil软件,在左侧栏“User”右键添加已经存在的文件,把刚刚三个文件添加进来,如图26所示。
我们可以在这个头文件右键。打开文件,如图27所示,滑动到文件最下方。看到这个语句。
这是一个条件编译,如图28所示,其含义为如果定义了“USE_STDPERIPH_DRIVER
”这
个字符串,下面这个indlude conh语句才有效。
我们需要复制一下这个字符串,然后打开工程选项,粘贴这个字符串,如图29所示,
这样才能包含标准外设库,也就是库函数。
最后添加头文件路径,把“User”“Library”目录路径都添加上,如图29所示。
至此,基于库函数的工程就创建好了。