STM32F103ZE—STM32标准库及工程文件的建立

STM32标准库

CMSIS标准

        基于Cortex系列的芯片内核都是相同的,因为stm32f103的芯片分为ARM公司内核和ST意法半导体公司设计的外设,而不同品牌的同类单片机芯片都是基于Cortex内核,区别在于不同的SOC厂商(例如,ST,Intel,苹果,三星,高通)外设设计的不同。为了方便不同外设但内核相同的芯片的代码移植,ARM与SOC厂商建立了CMSIS标准(CortexMicroControllerSoftware Interface Standard)。 所谓CMSIS标准,实际是新建了一个软件抽象层。见图CMSIS架构。

        其中,最主要的是CMSIS层:

        内核函数层:提供用于访问内核寄存器的名称,地址定义,ARM提供。

        设备外设函数:提供片上核外外设的地址和中断定义,SOC厂商提供。

STM32库文件简介

        stm32标准库可以从官网获得

解压出来可以得到《【固件库】STM32F10x_StdPeriph_Lib_V3.5.0》文件。

        这个是库文件各层次之间的关系。下面我们先从《【固件库】STM32F10x_StdPeriph_Lib_V3.5.0》文件介绍。

_htmresc:

        对于我们使用角度是无用的因为里面只有两个logo图片

Project:

STM32F10x_StdPeriph_Examples:

        这个是官方写的有关于外设的例程文件,相当于为每一个外设功能写一个官方的使用例程,大家在写程序的时候可以参考官方的编程风格。

STM32F10x_StdPeriph_Template:

        这里面是一些官方写的工程模板,而里面的五个文件夹是适用于不同编译器下的工程模板,

Utilities:

        

        里面的内容是关于STM32评估版,STM32评估版是官方在推出一款新产品的做的一款功能强大的评估版,里面是评估版的程序文件。

stm32f10x_stdperiph_lib_um:

        这个是固件库编程用的函数手册,如果有函数不懂,可以在手册中查询。

Libraries:

上面的三个文件我们基本上用不到(除了工程模板),Libraries是固件库。

STM32F10x_StdPeriph_Driver:

inc:include 头文件存放外设的初始化结构体,外设初始化结构体成员的参数列表,外设固件库函数的声明。

src:外设驱动函数库文件文件。

        其中,需要重点介绍的是,misc.c文件。SOC厂商拿到ARM内核,会对其用不到的内核外设进行裁剪,只保留SOC厂商用到的内核外设,写在misc.c文件中。

CMSIS:

        其中,除了CM3外其他的都是无用文件,是空内容。

CM3:

CoreSupport:

core_cm3.h:内核外设的寄存器映射。

core_cm3.c:内核外设的驱动函数。

DeviceSupport:

startup启动文件:

我们在arm开发板上只用到arm,其他的是和编译环境有关的。那么我们应该选择什么启动文件呢?

根据FLASH的容量选择合适的启动文件。

stm32f10x.h:实现了内核之外的外设映射。

system_stm32f10x.c:

system_stm32f10x.h:这两个文件配置外部时钟。

工程文件的建立

        下面介绍一下,一份工程文件是怎样建立的。

第一步

首先,我们新建文件夹,命名为项目的名称,例如:GPIO点亮LED

在这个文件夹中,新建如下文件,附说明:

建好文件以后,请在《【固件库】STM32F10x_StdPeriph_Lib_V3.5.0》中找到如下文件,并放入对应文件夹中。

Doc文件,新建一个readme.txt文件用来说明项目工程。

之所以删掉多余的文件,一方面为了精简,另一方面为了不让文件夹目录太深。

Project,不放内容,用Keil5新建的工程文件放在这里。

第二步

keil5新建工程

点x,关掉。

新建5个组,把对应的文件放到里面。做好这些以后还要配置软件。

第三步

Target 中选中微库“UseMicroLib”,为的是在日后编写串口驱动的时候可以使用printf函数

在Output选项卡中把输出文件夹定位到我们工程目录下的“output”文件夹,如果想在编译 的过程中生成hex文件,那么那CreateHEXFile选项勾上。

在Listing 选项卡中把输出文件夹定位到我们工程目录下的“Listing”文件夹。

在C/C++选项卡中添加处理宏及编译器编译的时候查找的头文件路径。如果头文件路径添 加有误,则编译的时候会报错找不到头文件

        在这个选项中添加宏,就相当于我们在文件中使用“#define”语句定义宏一样。在编译器中添加 宏的好处就是,只要用了这个模版,就不用源文件中修改代码。

         • STM32F10X_HD宏:为了告诉STM32标准库,我们使用的芯片类型是STM32型号是大容 量的,使STM32标准库根据我们选定的芯片型号来配置。

        • USE_STDPERIPH_DRIVER 宏:为了让stm32f10x.h 包含stm32f10x_conf.h 这个头文件。

        “Include Paths ”这里添加的是头文件的路径,如果编译的时候提示说找不到头文件,一般就是这 里配置出了问题。你把头文件放到了哪个文件夹,就把该文件夹添加到这里即可。

        至此,一个新建工程结束。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值