
意法半导体在推出STM32微控制器之初,也同时提供了一套完整细致的固件开发包,里面包含了在STM32开发过程中所涉及到的所有底层操作。通过在程序开发中引入这样的固件开发包,可以使开发人员从复杂冗余的底层寄存器操作中解放出来,将精力专注应用程序的开发上,这便是ST推出这样一个开发包的初衷。 但这对于许多从51/AVR这类单片机的开发转到STM32平台的开发人员来说,势必有一个不适应的过程。因为程序开发不再是从寄存器层次起始,而要首先去熟悉STM32所提供的固件库。那是否一定要使用固件库呢?当然不是。但STM32微控制器的寄存器规模可不是常见的8位单片机可以比拟,若自己细细琢磨各个寄存器的意义,必然会消耗相当的时间,并且对于程序后续的维护,升级来说也会增加资源的消耗。对于当前“时间就是金钱”的行业竞争环境,无疑使用库函数进行STM32的产品开发是更好的选择。本文将通过一个简单的例子对STM32的库函数做一个简单的剖析。 , E$ n8 q2 l" q以最常用的GPIO设备的初始化函数为例,如下程序段一: GPIO_InitTypeDef GPIO_InitStructure; 1 ( I& k2 y2 Q, k$ g3 r$ RGPIO_InitStructure.GPIO_Pin = GPIO_Pin_4; 2 GPIO_InitStructure.GPIO_Speed =. p7 J% z) u& b+ C7 r3 ~$ V GPIO_Speed_50MHz; 3 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 4 GPIO_Init(GPIOA , &GPIO_InitStructure);7 ]7 ^/ ^! P2 T# n& E6 w7 m 5 这是一个在STM32的程序开发中经常使用到的GPIO初始化程序段,其功能是将GPIOA.4口初始化为推挽输出状态,并最大翻转速率为50MHz。下面逐一分解: 1 P8 p# l4 q# c+ t$ [4 Yl 首先是1,该语句显然定义了一个GPIO_InitTypeDef类型的变量,名为GPIO_InitStructure,则找出GPIO_InitTypeDef的原型位于“stm32f10x_gpio.h”文件,原型如下: $ V: u9 ^& r8 L, ]3 B6 M1 vtypedef struct { u16 GPIO_Pin; GPIOSpeed_TypeDef GPIO_Speed; GPIOMode_TypeDef GPIO_Mode; 9 i# w. L4 a& r9 W}GPIO_InitTypeDef; |
è§£æSTM32çåºå½æ°.pdf
下载310.69 KB, 下载次数: 131
不错 帮顶 |
赞,![]() ![]() ![]() |
不错 帮顶 |
转载的吧,当初刚学时也晕头转向的,后来看别人的教程,看参考手册,再看楼主发的这个,对照库函数,才明白了 |
下载了,谢谢 |
没有C语言基础,学起来可能要费点劲,STM32的库函数使用的大量的结构体 和指针,这些基础一定要学好 |
下载了看看 |
下载了看看
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
很不错,帮顶 |
对于我这种新手帮助很大啊,很感谢楼主 |
除了gpio,楼主还有没有其他外设的库函数解析啊 |