你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

献给新手:解析STM32的库函数,又涨知识了哦

[复制链接]
亮剑2015 发布时间:2015-3-7 09:39
意法半导体在推出STM32微控制器之初,也同时提供了一套完整细致的固件开发包,里面包含了在STM32开发过程中所涉及到的所有底层操作。通过在程序开发中引入这样的固件开发包,可以使开发人员从复杂冗余的底层寄存器操作中解放出来,将精力专注应用程序的开发上,这便是ST推出这样一个开发包的初衷。
0 `# N$ }! p7 u
但这对于许多从51/AVR这类单片机的开发转到STM32平台的开发人员来说,势必有一个不适应的过程。因为程序开发不再是从寄存器层次起始,而要首先去熟悉STM32所提供的固件库。那是否一定要使用固件库呢?当然不是。但STM32微控制器的寄存器规模可不是常见的8位单片机可以比拟,若自己细细琢磨各个寄存器的意义,必然会消耗相当的时间,并且对于程序后续的维护,升级来说也会增加资源的消耗。对于当前“时间就是金钱”的行业竞争环境,无疑使用库函数进行STM32的产品开发是更好的选择。本文将通过一个简单的例子对STM32的库函数做一个简单的剖析。

, _9 S# b' R2 d- H* C  D* M8 Q
以最常用的GPIO设备的初始化函数为例,如下程序段一:

4 p. f$ y* {7 i9 N
GPIO_InitTypeDef GPIO_InitStructure;                                                                                                         1

, U& e: H# G' p3 c# }! a
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;                                                                                              2
. i. Z& T4 ?6 t
GPIO_InitStructure.GPIO_Speed =  c! q: h3 X6 |: Z' F, o
GPIO_Speed_50MHz;                                                                        3
/ g7 z7 _' |! H; |$ M0 H
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;                                                                        4
- b- L. S. i$ ^$ c0 e. S5 l5 H
GPIO_Init(GPIOA , &GPIO_InitStructure);
$ F/ w/ |) n6 J                                                                                                  5
( j# W+ h$ M+ \: Z
这是一个在STM32的程序开发中经常使用到的GPIO初始化程序段,其功能是将GPIOA.4口初始化为推挽输出状态,并最大翻转速率为50MHz。下面逐一分解:
' P6 G* \4 d! ]7 R
l  首先是1,该语句显然定义了一个GPIO_InitTypeDef类型的变量,名为GPIO_InitStructure,则找出GPIO_InitTypeDef的原型位于“stm32f10x_gpio.h”文件,原型如下:
$ c; A9 q& m( ^- ~6 g
typedef struct

$ H8 ~+ C: E# E/ o- [, a
{
4 D% U% O' x+ M4 K% n4 h
u16 GPIO_Pin;
( s; j" p2 i) ]3 U
GPIOSpeed_TypeDef GPIO_Speed;
" b4 b9 z) l6 w( N9 C
GPIOMode_TypeDef GPIO_Mode;
4 _( `$ G$ w1 ^' t! y2 R8 G6 E3 [' y
}GPIO_InitTypeDef;

5 W4 x7 D! s/ m$ m

解析STM32的库函数.pdf

下载

310.69 KB, 下载次数: 131

赞 收藏 评论11 发布时间:2015-3-7 09:39

举报

11个回答
bit 回答时间:2015-3-7 09:52:16
不错  帮顶
bldc小菜鸟 回答时间:2015-3-7 10:17:53
赞,
MouseCat 回答时间:2015-3-7 10:19:55
不错  帮顶
wamcncn 回答时间:2015-3-7 11:03:43
转载的吧,当初刚学时也晕头转向的,后来看别人的教程,看参考手册,再看楼主发的这个,对照库函数,才明白了
_ilikerome_ 回答时间:2015-3-7 11:05:26
下载了,谢谢
wamcncn 回答时间:2015-3-7 11:06:02
没有C语言基础,学起来可能要费点劲,STM32的库函数使用的大量的结构体 和指针,这些基础一定要学好
123tango 回答时间:2015-3-7 11:56:28
下载了看看
党国特派员 回答时间:2015-3-7 14:24:08
下载了看看   nothing.png nothing.png nothing.png nothing.png nothing.png nothing.png nothing.png nothing.png nothing.png nothing.png
风中的IT 回答时间:2015-3-8 15:08:32
很不错,帮顶
电子风云 回答时间:2015-3-8 22:15:00
对于我这种新手帮助很大啊,很感谢楼主
beyondcore 回答时间:2015-9-12 14:58:14
除了gpio,楼主还有没有其他外设的库函数解析啊
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版