搜索
bottom↓
回复: 17

如何学习STM32的库函数(以GPIO配置为例)

[复制链接]

出0入0汤圆

发表于 2019-6-19 09:11:11 | 显示全部楼层 |阅读模式
初学STM32和51单片机转向STM32的大伙们注意啦!初次接触学习STM32,是不是要来一个入门仪式,实现STM32版的“Hello World”——点灯仪式,你会发现必然要用到GPIO的配置,不同于51系列直接接IO口赋予高点电平来实现LED等亮灭的过程,SMT32显得有些复杂,需要调用库函数,看起来很麻烦,刚接触有很多疑惑。这就要求我们要学会看STM32的库函数啦。然后分享一下自己收集的资料跟大家分享一下。介绍如何学习、解释STM32的库函数,以GPIO配置为例。下面是介绍内容。       意法半导体在推出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。下面逐一分解:
   
      算了算了,编译器有点难受,我直接上PDF文件给大家,大家看完觉得有用记得顶一下

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2019-6-19 09:13:38 | 显示全部楼层
正点原子做的那个库,我觉得是最好用的

出0入0汤圆

 楼主| 发表于 2019-6-19 09:24:10 | 显示全部楼层
plb83 发表于 2019-6-19 09:13
正点原子做的那个库,我觉得是最好用的

好的,谢谢!之前找视频资料,朋友推荐的一个视频,顺便买了配套的开发板。去学习一下 原子的库

出0入162汤圆

发表于 2019-6-19 09:26:19 来自手机 | 显示全部楼层
现在都是HAL库了,新器件不提供标准库了。

出0入0汤圆

 楼主| 发表于 2019-6-19 09:49:19 | 显示全部楼层
AWEN2000 发表于 2019-6-19 09:26
现在都是HAL库了,新器件不提供标准库了。

HAL的库是晦涩难懂一些

出0入0汤圆

 楼主| 发表于 2019-6-19 09:54:13 | 显示全部楼层
迅得电子 发表于 2019-6-19 09:49
HAL的库是晦涩难懂一些


很多人都说HAL库在效率上确实太蛋疼了,最基本的串口中断接收,如果用HAL库的话速度一快就反应不过来了。
而且HAL库本来就是牺牲硬件成本,来换取开发成本的一种方式。

出0入0汤圆

发表于 2019-6-19 09:59:36 | 显示全部楼层
寄存器走天下

出0入0汤圆

 楼主| 发表于 2019-6-19 10:05:28 | 显示全部楼层

大佬大佬,寄存器是根本哈哈,需要记很多东西,开发比较累吧

出0入4汤圆

发表于 2019-6-19 10:24:13 | 显示全部楼层
看到标题我就知道是你的帖子。。。

出0入0汤圆

 楼主| 发表于 2019-6-19 10:30:32 | 显示全部楼层
lzg1987 发表于 2019-6-19 10:24
看到标题我就知道是你的帖子。。。

这大概是爱吧

出0入0汤圆

发表于 2019-6-19 17:29:36 | 显示全部楼层
LL 库了解下。。。

出0入0汤圆

发表于 2019-6-19 17:41:35 来自手机 | 显示全部楼层
LL库接近标准库,之前一直用标准库,目前stm32cubeMX加LL库感觉挺适应的

出0入0汤圆

 楼主| 发表于 2019-6-19 17:43:33 | 显示全部楼层
hzqianyi 发表于 2019-6-19 17:41
LL库接近标准库,之前一直用标准库,目前stm32cubeMX加LL库感觉挺适应的

LL库,不懂,看来要去了解一下啦

出0入0汤圆

 楼主| 发表于 2019-6-19 17:43:50 | 显示全部楼层
markdif 发表于 2019-6-19 17:29
LL 库了解下。。。

好的,我去了解了解

出0入0汤圆

发表于 2019-6-20 09:59:24 | 显示全部楼层
楼主可以找野火STM32开发板的资料看看,挺容易上手的

出0入10汤圆

发表于 2019-6-20 10:46:31 | 显示全部楼层
我有野火的资料,需要的话请拿走。
https://pan.baidu.com/s/11OdK70PPRWgYDFA2YV5kRw
提取码:jurh

出0入0汤圆

 楼主| 发表于 2019-6-20 10:46:45 | 显示全部楼层
lj123456 发表于 2019-6-20 09:59
楼主可以找野火STM32开发板的资料看看,挺容易上手的

看了野火的一下资料,代码注释什么的都没有,看着有点累

出0入0汤圆

 楼主| 发表于 2019-6-20 10:47:27 | 显示全部楼层
zzage 发表于 2019-6-20 10:46
我有野火的资料,需要的话请拿走。
https://pan.baidu.com/s/11OdK70PPRWgYDFA2YV5kRw
提取码:jurh ...

好的,谢谢分享
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-19 09:22

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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