STM32补充(一) 启动文件

所需要的文件都是从官方库中下载,从官网下载STM32 的3.5 版库。

我们需要把Libraries 目录下的库函数文件添加到工程中,并查阅库帮助文档来了解ST 提供的库函数,这个文档说明了每一个库函数的使用方法。

内核与外设的库文件分别存放在CMSIS 和STM32F10x_StdPeriph_Driver 文件夹中。内核是针对M3的相关操作,外设是M3的外围电路芯片的相关操作如:串口等。

1. core_cm3.c 文件

CM3 核通用的源文件core_cm3.c 和头文件core_cm3.h,它们的作用是为采用Cortex-M3 核设计SoC 的芯片商设计的芯片外设提供一个进入CM3 内核的接口。对于其他公司的CM3 系列芯片这两个文件也是相同的。至于这些功能是怎样用源码实现的,我们先不用理会,我们只需把这个文件加进我们的工程文件即可。

2. system_stm32f10x.c 文件

在DeviceSupport 文件夹下是启动文件,外设寄存器定义和中断向量定义成的一些文件,有ST公司提供。system_stm32f10x.c 该文件的功能是设置系统时钟和总线时钟。所有的外设都与时钟的频率有关,所以这个文件的时钟配置是很关键的。

system_stm32f10x.c 在实现系统时钟的时候要用到PLL(锁相环),这就需要操作寄存器,寄存器都是以存储器映射的方式来访问的,所以该文件中包含了stm32f10x.h 这个头文件。

3. stm32f10x. h 文件

stm32f10x.h 这个文件非常重要,是一个非常底层的文件。它包含了STM32 中寄存器地址和结构体类型定义,在使用到STM32 固件库的地方都要包含这个头文件。

4. 启动文件

 

MCU 型号

FLASH大小

STM32F10X_LD

STM32F101xx

STM32F102xx

STM32F103xx

16 ~ 32 Kbytes

STM32F10X_MD

STM32F101xx

STM32F102xx

STM32F103xx

64 ~ 128 Kbytes

STM32F10X_HD

STM32F101xx

STM32F103xx

256 ~ 512 Kbytes

STM32F10X_CL

STM32F105xx

STM32F107xx

忽略

5. STM32F10x_StdPeriph_Driver 文件夹

Libraries\STM32F10x_StdPeriph_Driver 文件夹下有inc(include 的缩写)和src(source的缩写)这两个文件夹,这都属于CMSIS 的设备外设函数部分。src 里面是每个设备外设的驱动程序,这些外设是芯片制造商在Cortex-M3 核外加进去的

 

 

如何使用库帮助文档?
官方资料是所有关于STM32 知识的源头,如何使用官方资料。官方的帮助手册是最好的教程,几乎包含了所有在开发过程中遇到的问题。

1. 常用官方资料
 《stm32f10x_stdperiph_lib_um.chm》这个就是前面提到的库帮助文档,在使用库函数时,我们最好通过查阅此文件来了解库函数原型或库函数调用的方法,也可以直接阅读源码里面的函数说明。
 《STM32 参考手册.pdf 》这个文件相当于STM32 的datasheet,它把STM32 的时钟、存储器架构及各种外设、寄存器都描述得清清楚楚。当我们对STM32 库函数的实现方式感到困惑时,可查阅这个文件。若以直接配置寄存器方式开发,查阅这个文档的频率会更高,但这样效率太低了。
 《Cortex-M3 权威指南》该手册是由ARM 公司提供的, 它详细讲解了Cortex 内核的架构和特性,要深入了解Cortex-M3 内核,这个文档是首选

怎么使用ST函数库

所谓库函数,就是STM32 固件库文件中为我们编写好的函数接口,我们只要调用这些库函数,就可以对STM32 进行配置,达到控制目的。我们可以不知道库函数是如何实现的,但我们调用函数必须要知道函数的功能、可传入的参数及其意义和函数的返回值。对ST库函数会查就行!所以我们学会查阅库帮助文档是很有必要的。打开库帮助文档stm32f10x_stdperiph_lib_um.chm

层层打开文档的目录标签Modules\STM32F10x_StdPeriph_Driver , 可看到STM32F10x_StdPeriph_Driver 标签下有很多外设驱动文件的名字MISC、ADC、BKP、CAN 等标签。我们试着查看ADC 的初始化库函数(ADC_Init) 看看, 继续打开标签
\ADC\ADC_Exported_Functions\Functions\ADC_Init

利用这个文档,我们即使没有去看它的具体代码,也知道要怎么利用它了。

如ADC_Init 的功能是:以ADC_InitStruct 参数配置ADC,进行初始化。原型为:void ADC_Init(ADC_TypeDef * ADCx , ADC_Init_TypeDef * ADC_InitStruct)其中输入的参数ADCx 和ADC_InitStruct 均为库文档中的自定义数据类型,这两个传入参数均为结构体指针。我们不知道ADC_TypeDef 这样的类型是什么意思,可以点击函数原型中带下划线的ADC_TypeDef 就可以查看这是什么类型了。

就这样初步了解一下库函数,读者就可以发现STM32 的库写得很优美。每个函数和数据类型都符合见名知义的原则,当然,这样的名称写起来特别长,而且对于我们来说要输入这么长的英文很容易出错,所以在开发软件的时候,在用到库函数的地方,直接把库帮助文档中函数名称复制粘贴到工程文件就可以了。

 

 

 

 

 

 

  • 1
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

帅气滴点C

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值