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

如何学习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扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版