找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2707|回复: 6
打印 上一主题 下一主题
收起左侧

解析STM32的库函数

[复制链接]
跳转到指定楼层
楼主
意法半导体在推出 STM32 微控制器之初,也同时提供了一套完整细致的固件开发包,
里面包含了在 STM32 开发过程中所涉及到的所有底层操作。通过在程序开发中引入这样的
固件开发包,可以使开发人员从复杂冗余的底层寄存器操作中解放出来,将精力专注应用程
序的开发上,这便是ST 推出这样一个开发包的初衷。
但这对于许多从51/AVR这类单片机的开发转到STM32 平台的开发人员来说,势必有一
个不适应的过程。因为程序开发不再是从寄存器层次起始,而要首先去熟悉 STM32 所提供
的固件库。那是否一定要使用固件库呢?当然不是。但 STM32 微控制器的寄存器规模可不
是常见的8 位单片机可以比拟,若自己细细琢磨各个寄存器的意义,必然会消耗相当的时间,
并且对于程序后续的维护,升级来说也会增加资源的消耗。对于当前“时间就是金钱”的行
业竞争环境,无疑使用库函数进行 STM32 的产品开发是更好的选择。本文将通过一个简单
的例子对STM32的库函数做一个简单的剖析。
以最常用的GPIO设备的初始化函数为例,如下程序段一:
GPIO_InitTypeDef GPIO_InitStructure;                        ○ 1  
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;                     ○ 2  
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;                ○ 3  
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;                ○ 4  
GPIO_Init(GPIOA , &GPIO_InitStructure);                        ○ 5  
这是一个在STM32 的程序开发中经常使用到的 GPIO初始化程序段,其功能是将 GPIOA.4 口
初始化为推挽输出状态,并最大翻转速率为50MHz。下面逐一分解:
  首先是○ 1 ,该语句显然定义了一个GPIO_InitTypeDef类型的变量,名为GPIO_InitStructure,
则找出GPIO_InitTypeDef的原型位于“stm32f10x_gpio.h”文件,原型如下:
typedef struct
{
u16 GPIO_Pin;
GPIOSpeed_TypeDef GPIO_Speed;
GPIOMode_TypeDef GPIO_Mode;
}GPIO_InitTypeDef;
由此可知GPIO_InitTypeDef 是一个结构体类型同义字,其功能是定义一个结构体,该结
构体有三个成员分别是 u16 类型的 GPIO_Pin、GPIOSpeed_TypeDef  类型的 GPIO_Speed
和 GPIOMode_TypeDef  类 型 的 GPIO_Mode 。 继 续 探 查 GPIOSpeed_TypeDef 和
GPIOMode_TypeDef 类型,在“stm32f10x_gpio.h”文件中找到对 GPIOSpeed_TypeDef的
定义:
typedef enum
{   
      GPIO_Speed_10MHz = 1,
      GPIO_Speed_2MHz,   
      GPIO_Speed_50MHz
}GPIOSpeed_TypeDef;
则可知GPIOSpeed_TypeDef 枚举类型同一只,其功能是定义一个枚举类型变量,该变量
可表示GPIO_Speed_10MHz、GPIO_Speed_2MHz 和GPIO_Speed_50MHz 三个含义(其中
GPIO_Speed_10MHz 已经定义为1,读者必须知道GPIO_Speed_2MHz则依次被编译器赋
予 2,而GPIO_Speed_50MHz 为3)。
同样也在“stm32f10x_gpio.h”文件中找到对GPIOMode_TypeDef 的定义:
typedef enum
{   
GPIO_Mode_AIN = 0x0,
    GPIO_Mode_IN_FLOATING = 0x04,
   GPIO_Mode_IPD = 0x28,
   GPIO_Mode_IPU = 0x48,
   GPIO_Mode_Out_OD = 0x14,
   GPIO_Mode_Out_PP = 0x10,
   GPIO_Mode_AF_OD = 0x1C,
   GPIO_Mode_AF_PP = 0x18
}GPIOMode_TypeDef;


完整的pdf格式文档51黑下载地址(共6页):
解析STM32的库函数.pdf (310.69 KB, 下载次数: 47)


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏3 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:240545 发表于 2017-10-18 15:41 | 只看该作者
沙发!好帖必顶!
回复

使用道具 举报

板凳
ID:239030 发表于 2017-11-2 11:34 | 只看该作者
好资料,很适合新手自学
回复

使用道具 举报

地板
ID:239056 发表于 2017-11-2 12:28 | 只看该作者
不错,可以好好学一下
回复

使用道具 举报

5#
ID:162136 发表于 2017-11-2 17:59 | 只看该作者
感谢分享
回复

使用道具 举报

6#
ID:138247 发表于 2019-8-28 13:23 | 只看该作者

感谢楼主分享。。。
回复

使用道具 举报

7#
ID:540421 发表于 2019-8-30 11:02 | 只看该作者
感谢楼主分享
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表