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

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

[复制链接]
generalcircuits 发布时间:2019-6-19 09:20
本帖最后由 generalcircuits 于 2019-6-20 16:50 编辑

       初学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设备的初始化函数为例,如下程序段一:
  1. GPIO_InitTypeDef GPIO_InitStructure;                                                                                                       1

  2.                         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;                                                                                              2

  3.                         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;                                                                             3

  4.                         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;                                                                              4

  5.                         GPIO_Init(GPIOA , &GPIO_InitStructure);                                                                                                  5
复制代码
      这是一个在STM32的程序开发中经常使用到的GPIO初始化程序段,其功能是将GPIOA.4口初始化为推挽输出状态,并最大翻转速率为50MHz。下面逐一分解:
   
      算了算了,编译器有点难受,我直接上PDF文件给大家,大家看完觉得有用记得顶一下

如何学习STM32的库函数.pdf

下载

310.69 KB, 下载次数: 10

收藏 评论16 发布时间:2019-6-19 09:20

举报

16个回答
frank171 回答时间:2019-6-19 10:01:48
算了算了,直接发视频吧
generalcircuits 回答时间:2019-6-19 10:32:13
frank171 发表于 2019-6-19 10:01
算了算了,直接发视频吧

视频也有,感觉不是很详细。时间花的也多
子曰好人 回答时间:2019-6-19 11:04:00
本帖最后由 子曰好人 于 2019-6-19 11:08 编辑
  1. void LED_Init(void)
  2. {
  3.     GPIO_InitTypeDef GPIO_InitStructure;
  4.     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
  5.     GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
  6.     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  7.     GPIO_InitStructure.GPIO_Mode =GPIO_Mode_Out_PP;
  8.     GPIO_Init(GPIOA , GPIO_InitStructure);
  9. }
复制代码
建议楼主贴代码用这种方式来做,更明显和突出

另外一个问题,是标准的初始化过程还需要打开GPIO相应的时钟,不知道你是统一在这段代码调用之前开的时钟还是怎么处理的


大悟哥 回答时间:2019-6-19 11:10:48
建议楼主贴代码用这种方式来做
generalcircuits 回答时间:2019-6-19 13:08:47
子曰好人 发表于 2019-6-19 11:04
建议楼主贴代码用这种方式来做,更明显和突出

另外一个问题,是标准的初始化过程还需要打开GPIO相应的时钟 ...

不好意思,忘记传文件了,初始化已经打开了GPIO相应的时钟,另外问一下,像你这样贴代码是怎么弄得?谢谢啦
generalcircuits 回答时间:2019-6-19 13:09:32
大悟哥 发表于 2019-6-19 11:10
建议楼主贴代码用这种方式来做

好的,这种贴代码的方法还不懂,求教
子曰好人 回答时间:2019-6-19 13:33:43
generalcircuits 发表于 2019-6-19 13:08
不好意思,忘记传文件了,初始化已经打开了GPIO相应的时钟,另外问一下,像你这样贴代码是怎么弄得?谢谢 ...

高级模式.png
高级模式中的一些插件,方便在回帖和发帖时候更清晰的表达自己的思路,常用的就插入图片,附件,还有就是这个贴代码了
generalcircuits 回答时间:2019-6-19 14:12:59
子曰好人 发表于 2019-6-19 13:33
高级模式中的一些插件,方便在回帖和发帖时候更清晰的表达自己的思路,常用的就插入图片,附件,还有就 ...

好的,感谢感谢
zoro3 回答时间:2019-6-20 14:33:46
挺不错的资料,谢谢分享
12下一页

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

相似分享

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版