STM32库开发实战指南:基于STM32F4
上QQ阅读APP看书,第一时间看更新

8.2 使用帮助文档

官方资料是所有关于STM32知识的源头,所以本小节介绍如何使用官方资料。官方的帮助手册是最好的教程,几乎包含了所有在开发过程中遇到的问题。这些资料已整理到了秉火论坛中。

8.2.1 常用官方资料

(1)《STM32F4xx参考手册》

这个文件全方位介绍了STM32芯片的各种片上外设,它把STM32的时钟、存储器架构、各种外设、寄存器都描述得清清楚楚。当我们对STM32的外设感到困惑时,可查阅这个文档。若以直接配置寄存器的方式开发的话,查阅这个文档寄存器部分的频率会相当高,但这样做开发效率太低了。

(2)《STM32F4xx规格书》

本文档相当于STM32的数据手册,包含了STM32芯片所有的引脚功能说明及存储器架构、芯片外设架构说明。后面我们使用STM32其他外设时,常常需要查阅这个手册,以了解外设对应到STM32的哪个GPIO引脚。

(3)《Cortex-M4内核参考手册》

本文档由ST公司提供,主要讲解STM32内核寄存器相关的说明,例如系统定时器、中断等寄存器。这部分内容是《STM32F4xx参考手册》没涉及的内核部分的补充。相对来说,本文档虽然介绍了内核寄存器,但不如以下两个文档详细,要了解内核,可与以下两个手册配合使用。

(4)《Cortex-M3权威指南》《Cortex_m4_Technical Reference Manual》

这两个手册是由ARM公司提供的,它们详细讲解了Cortex内核的架构和特性。要深入了解Cortex-M内核,这是首选,是经典中的经典。其中Cortex-M3版本有中文版,方便学习。因为Cortex-M4内核与Cortex-M3内核大部分相同,可用它来学习,而Cortex-M4新增的特性,则必须参考《Cortex_m4_Technical Reference Manual》文档了,目前只有英文版。

(5)《STM32f4xx_dsp_stdperiph_lib_um.chm》

这个就是本章提到的库的帮助文档,在使用库函数时,我们最好通过查阅此文件来了解标准库提供了哪些外设、函数原型或库函数的调用的方法。也可以直接阅读源码里面的函数说明。

8.2.2 初识库函数

所谓库函数,就是STM32的库文件中为我们编写好的函数接口,我们只要调用这些库函数,就可以对STM32进行配置,达到控制的目的。我们可以不知道库函数是如何实现的,但我们调用函数必须要知道函数的功能、可传入的参数及其意义和函数的返回值。

于是,有读者会问:那么多函数我怎么记呀?我的回答是:会查就行了。所以学会查阅库帮助文档是很有必要的。

打开库帮助文档《STM32f4xx_dsp_stdperiph_lib_um.chm》,见图8-7。

图8-7 库帮助文档

1)层层打开文档的目录标签:

标签目录Modules\STM32F4xx_StdPeriph_Driver\。

可看到STM32F4xx_StdPeriph_Driver标签下有很多外设驱动文件的名字,如MISC、ADC、BKP、CAN等。

2)我们试着查看GPIO的“位设置函数GPIO_SetBits”,打开标签:

标签目录Modules\STM32F4xx_StdPeriph_Driver\GPIO\Functions\GPIO_SetBits,见图8-8。

图8-8 库帮助文档的函数说明

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

如GPIO_SetBits函数的原型为void GPIO_SetBits(GPIO_TypeDef * GPIOx, uint16_t GPIO_Pin)。它的功能是:输入一个类型为GPIO_TypeDef的指针GPIOx参数,选定要控制的GPIO端口;输入GPIO_Pin_x宏,其中x是端口的引脚号,指定要控制的引脚。

其中输入的参数GPIOx为ST标准库中定义的自定义数据类型,这两个传入参数均为结构体指针。初学时,我们并不知道GPIO_TypeDef这样的类型是什么意思,单击函数原型中带下划线的GPIO_TypeDef,就可以查看这个类型的声明了。

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

有的用户觉得使用库文档麻烦,也可以直接查阅STM32标准库的源码,库帮助文档的说明都是根据源码生成的,所以直接看源码也可以了解函数功能。