STM32C8T6基于标准库新建工程
ST(意法半导体)为了方便用户开发程序,提供了一套丰富的 STM32标准外设函数库。
ST(意法半导体)为了方便用户开发程序,提供了一套丰富的 STM32标准外设函数库
创建工程步骤:
创建工程前要在工程目录下创建三个文件夹“Start”、“Library”、“User”
Start文件夹
打开官方固件库选择文件夹打开“ Libraries-->CMSIS-->CM3-->DeviceSupport-->ST-->STM32F10x ”
复制其中的三个文件到工程文件的"Start"文件夹中
stm32f10x.h是STM32的外设寄存器描述文件,作用就和51单片机的<REGX52.h>一样是用来描述STM32 有哪些寄存器和它对应的地址的。system文件主要用来配置时钟的,STM32主频72MHz就是system文件里的函数配置的。“Libraries-->CMSIS-->CM3-->DeviceSupport-->ST-->STM32F10x-->startup-->arm”
复制其中的后缀md.s文件到工程文件的"Start"文件夹中。(也可将其中所有文件都复制到Start文件夹,但在软件中要选择性的添加文件,不用全部都添加进来,只添加芯片所对应的文件即可)
这些文件都是STM32F10X系列的启动文件,STM32 的程序就是从启动文件开始执行的。其中不同后缀代表不同型号的芯片,而后缀md.s的文件是STM32F103C8T6的启动文件
最后打开
“Libraries-->CMSIS-->CM3-->CoreSupport”
因为这个STM32 是内核和内核外围的设备组成的,而且这个内核的寄存器描述和外围设备的描述文件不是在一起的,所以我们还需要添加一个内核寄存器的描述文件。上面两个cm3文件就是内核的寄存器描述,他还带了一些内核的配置函数,所有多了个c文件。
将这两个文件复制到工程文件中的"Start",即完成"START“文件夹的配置
在创建工程的时候只选择一个启动文件,剩下的c和h文件都要添加到工程中。
有了start文件夹下的函数,此时已经有了最基本的文件,如果只是基于寄存器的开发,这里已经够了。如果要基于库函数开发,就还需要在添加一些文件。
Library文件夹:
打开官方固件库选择文件夹打开“Libraries-->STM32F10x_StdPeriph_Driver--> inc和src ”其中是,是各类外设的配置文件。
inc文件夹是后缀为.h的文件,里面是库函数的头文件。
src文件夹是后缀为.c的文件,里面是库函数的源文件,但是其中还包含了misc.c,这是内核的库函数,其他的就是内核外的外设库函数。
复制inc与src中的文件到工程文件夹里的Library中
将“.c”与“.h”文件移植到工程文件夹的"Library“之后,则”Library”文件夹配置完成
以下是配置好的文件夹
User文件夹:
打开固件库中的“Project-->STM32F10x_StdPeriph_Template”
复制其中的这三个文件夹到工程文件中的“User”文件夹中
即完成User文件夹配置
conf文件是用来配置库函数头文件的包含关系的,还有用来参数检查的函数定义,这是所有库函数都需要的。两个it(interrupt)文件是用来存放中断函数的。
如果打开我们的#include "stm32f10x.h" 头文件,头文件后面有这样的语句
只有定义了这样的宏,下面的语句才生效,才能使用库函数。这就是我们需要定义这个宏的原因。
工程选项(魔术棒),Debug,下拉列表选择对应调试器,使用STLink,就选择STLink,Settings,Flash Download里勾选Reset and Run。
后续还需要完成keil的配置,让keil能找到这些文件。
工程架构

通过此图阐述上述文件都是干什么的。
首先是startup启动文件,这个是程序执行的最基本的文件。
可以看到keil中启动文件是用汇编写的,启动文件中定义了中断向量表,中断服务函数等。初始化嵌入式闪存接口,锁相环,更新系统内核的时钟变量。所有在main函数之前就已经执行了很多东西了,闪存接口,时钟等一系列杂碎的东西都配置好了。还有其他中断,这些中断达到了触发条件就会自动执行。
这些中断函数的定义就是在stm32f10x中。
其他用户文件就是我们自己封装的函数,模块化编程。
conf文件包含了所有库函数的头文件,而我们使用的头文件中,条件编译那条语句包含了conf文件,所以就必须使用那个宏才能使用库函数。
更多推荐



所有评论(0)