理解 STM32 GPIO初始化 库函数
- 格式:doc
- 大小:32.00 KB
- 文档页数:5
单片机STM32开发中常用库函数分析在STM32开发中,使用库函数可以帮助开发人员更快速、更便捷地实现目标功能。
下面是一些常用的STM32库函数的分析:1. GPIO库函数:GPIO库函数用于对STM32的通用输入输出引脚进行配置和控制。
通过这些函数可以实现引脚的初始化、读取和设置等操作。
例如,GPIO_Pin_Init(函数可以对引脚进行初始化配置,GPIO_Pin_Read(函数用于读取引脚的电平,GPIO_Pin_Write(函数用于设置引脚的输出电平。
这些函数的使用可以方便地对外设进行控制。
2. NVIC库函数:NVIC库函数用于对中断向量表进行操作和配置。
通过这些函数可以实现中断的使能、优先级的设置等操作。
例如,NVIC_EnableIRQ(函数可以使能指定的中断,NVIC_SetPriority(函数可设置中断的优先级。
这些函数的使用可以方便地管理中断响应。
3. RCC库函数:RCC库函数用于对STM32的时钟系统进行配置和管理。
通过这些函数可以实现外部时钟源的配置、APB总线时钟的配置等操作。
例如,RCC_OscConfig(函数可进行时钟源的配置,RCC_APBPeriphClockCmd(函数可使能相应的外设时钟。
这些函数的使用可以方便地进行时钟管理。
4. UART库函数:UART库函数用于对STM32的串行通讯端口进行操作和配置。
通过这些函数可以实现串口的初始化、发送和接收等操作。
例如,UART_Init(函数用于串口的初始化设置,UART_SendData(函数用于发送数据,UART_ReceiveData(函数用于接收数据。
这些函数的使用可以方便地进行串口通讯。
5. SPI库函数:SPI库函数用于对STM32的串行外设接口进行操作和配置。
通过这些函数可以实现SPI通讯的初始化、发送和接收等操作。
例如,SPI_Init(函数用于SPI的初始化设置,SPI_SendData(函数用于发送数据,SPI_ReceiveData(函数用于接收数据。
STM32-GPIO及EXTI初始化详解void EXTI_Configuration(void); //定义IO中断初始化函数EXTI_Configuration();//IO中断初始化函数调用简单应用://中断设置void EXTI_Configuration(void){EXTI_InitTypeDef EXTI_InitStructure; //EXTI初始化结构定义EXTI_ClearITPendingBit(EXTI_LINE_KEY_BUTTON);//清除中断标志GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource3);//管脚选择GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource4);GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource5);GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource6);EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;//事件选择EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;//触发模式EXTI_InitStructure.EXTI_Line = EXTI_Line3 | EXTI_Line4; //线路选择EXTI_InitStructure.EXTI_LineCmd = ENABLE;//启动中断EXTI_Init(&EXTI_InitStructure);//初始化}//RCC初始化函数中开启I/O时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA , ENABLE);//GPIO初始化函数中定义输入I/O管脚。
STM32库函数功能详解STM32是一款广泛应用于嵌入式系统中的微控制器系列,由意法半导体(STMicroelectronics)开发。
它具有高性能、低功耗和丰富的外设功能,广泛应用于各种应用领域。
为了方便开发者进行快速开发和简化编程流程,STM32提供了一系列库函数,本文将对其功能进行详细解析。
1.GPIO库函数:GPIO库函数用于配置STM32的通用输入输出口(GPIO)功能,包括输入、输出模式的配置和读写操作。
通过GPIO库函数,开发者可以方便地读取外部输入信号、控制外部设备的输出。
例如,使用GPIO库函数可以简单地配置一个引脚为输入模式,并读取其电平状态,或者配置一个引脚为输出模式,并设置其输出电平。
2.EXTI库函数:EXTI库函数用于配置STM32的外部中断(EXTI)功能,可以实现对外部事件的中断响应功能。
通过EXTI库函数,开发者可以方便地配置外部中断的触发方式和优先级,以及处理中断事件。
例如,使用EXTI库函数可以配置一个引脚为上升沿触发模式,并在引脚触发中断时执行相应的中断服务函数。
3.RCC库函数:RCC库函数用于配置和控制STM32的时钟系统(RCC),包括各个外设模块和系统时钟的配置。
通过RCC库函数,开发者可以方便地配置STM32的时钟源、时钟分频和时钟使能。
例如,使用RCC库函数可以配置系统时钟为指定频率,以及使能和配置外设时钟。
4.NVIC库函数:NVIC库函数用于配置和控制STM32的中断控制器(NVIC)功能,包括中断向量表和中断优先级的配置。
通过NVIC库函数,开发者可以方便地配置中断向量表和中断优先级,以及控制中断的使能和屏蔽。
例如,使用NVIC库函数可以配置一个外部中断的优先级和使能状态,以及控制中断的屏蔽和释放。
5.ADC库函数:ADC库函数用于配置和控制STM32的模数转换器(ADC)功能,可以实现模拟信号的数字化转换。
通过ADC库函数,开发者可以方便地配置ADC的转换通道、采样速率和转换模式。
(1)STM32使⽤HAL库操作GPIO⼀初始化GPIO使⽤HAL库的优点在于不⽤⼿动添加初始化的代码了,CubeMX会根据软件设置⾃动⽣成。
⾃动⽣成的HAL库GPIO初始化代码:static void MX_GPIO_Init(void){GPIO_InitTypeDef GPIO_InitStruct;/* GPIO Ports Clock Enable */__HAL_RCC_GPIOH_CLK_ENABLE();__HAL_RCC_GPIOD_CLK_ENABLE();/*Configure GPIO pin Output Level */HAL_GPIO_WritePin(GPIOD, GPIO_PIN_12|GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15, GPIO_PIN_SET);/*Configure GPIO pin : PD11 */GPIO_InitStruct.Pin = GPIO_PIN_11;GPIO_InitStruct.Mode = GPIO_MODE_INPUT;GPIO_InitStruct.Pull = GPIO_PULLUP;HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);/*Configure GPIO pins : PD12 PD13 PD14 PD15 */GPIO_InitStruct.Pin = GPIO_PIN_12|GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15;GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;GPIO_InitStruct.Pull = GPIO_NOPULL;GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);}顺序:(1)定义结构体变量。
1. 基础概念在开始介绍STM32 GPIO读取函数之前,让我们先来了解一下GPIO 的基本概念。
GPIO,即通用输入输出,是单片机中常见的一种外设模块,用于实现与外部设备的数字通信。
在STM32系列的单片机中,GPIO模块提供了丰富的功能和灵活的配置,使得我们可以通过GPIO 口实现数字信号的输入和输出。
2. GPIO读取函数在STM32系列的单片机中,我们可以通过调用相关的库函数来实现对GPIO口的读取操作。
其中,对于输入操作,我们可以使用GPIO_ReadInputDataBit函数来实现。
该函数的原型为:uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_tGPIO_Pin)。
其中,GPIOx代表GPIO口的基位置区域,GPIO_Pin代表具体的引脚编号,函数的返回值为引脚的状态,通常是0或1,代表低电平和高电平。
3. 深入理解在实际的应用中,我们需要从硬件层面深入理解GPIO读取函数的原理和使用方法。
我们需要了解GPIO口的工作原理,包括输入模式和输出模式的配置方法,以及GPIO口在不同状态下的电平变化。
我们需要熟悉STM32的库函数,了解库函数的调用方法和参数含义。
我们需要考虑GPIO读取函数在特定场景下的应用,如按键输入、传感器信号读取等。
4. 应用举例假设我们需要通过STM32的GPIO口读取外部按键的状态,并根据按键状态执行相应的操作。
我们可以使用GPIO_ReadInputDataBit函数来读取按键引脚的状态,然后根据返回的状态值进行逻辑判断,从而实现按键的检测和响应。
这个例子充分展示了GPIO读取函数在实际中的应用,同时也能帮助我们更深入地理解GPIO的工作原理和库函数的使用。
5. 个人观点和总结从个人角度来看,GPIO读取函数是STM32开发中非常基础和重要的一部分。
通过学习和掌握GPIO读取函数的原理和使用方法,我们可以更好地理解STM32的GPIO模块,并能够在实际的项目中灵活应用。
02、GPIO初始化⼀、使⽤库函数编程技巧1. 阅读硬件原理图《GEC-M4原理图2016-07-29.pdf》,了解当前需要使⽤STM32芯⽚哪个硬件,就可以知道使⽤哪些库函数接⼝。
2. 使⽤库函数的时候,只需要了解该函数的使⽤⽅法,如传⼊参数、返回值、功能描述就⾜矣。
库函数⾥⾯的编写内容不需要了解,这些代码都是由ST公司去实现的。
3. 如何使⽤库函数实现⼀个具体的功能,ST公司都会提供例⼦⽂档,告诉我们库函数如何使⽤,如函数前后的调⽤顺序,详细硬件初始化流程,⽆论是新⼿还是⽼⼿都要看。
STM32F4xx中⽂参考⼿册.pdfstm32f4xx_dsp_stdperiph_lib_um.chm⼆、初始化GPIOint main(void){# 声明变量GPIO_InitTypeDef GPIO_InitStructe;# x表⽰要打开的端⼝(A~G)# 该函数表⽰打开端⼝x,也是说使端⼝x通电RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOx,ENABLE);# 设置端⼝x为输出模式GPIO_InitStructe.GPIO_Pin = GPIO_Pinx; # 设置引脚x,可以⽤(|)同时设置同⼀端⼝下的多个引脚GPIO_InitStructe.GPIO_Mode = GPIO_Mode_OUT; # 设置为输出模式GPIO_InitStructe.GPIO_OType = GPIO_OType_PP; # 设置为推挽模式,增加输出电流,同时增加了功率的消耗GPIO_InitStructe.GPIO_PuPd = GPIO_PuPd_NOPULL; # 设置⽆上下拉电阻GPIO_InitStructe.GPIO_Speed = GPIO_Speed_100MHz; # 设置输出速率为100MHzGPIO_Init(GPIOx,&GPIO_InitStructe); # 初始化端⼝x(A~G)}。
stm32标准库函数说明
STM32标准库函数是为了方便开发者使用STM32微控制器而提供的一系列函数和库。
这些库函数提供了许多常用的功能,如GPIO操作、定时器操作、串口通信、ADC转换等。
以下是一些常见的STM32标准库函数及其说明:
GPIO 初始化函数:用于配置GPIO(General-Purpose Input/Output)的引脚模式(输入、输出、复用等)和参数(输出类型、输出速度、上拉/下拉等)。
定时器初始化函数:用于配置定时器的模式(计数器模式、PWM模式等)和参数(时钟源、自动重载值等)。
串口初始化函数:用于配置串口通信的参数(波特率、数据位、停止位、奇偶校验等)。
ADC 初始化函数:用于配置ADC(Analog-to-Digital Converter)的参数(转换模式、分辨率等)。
中断初始化函数:用于配置中断的优先级和触发方式。
延时函数:用于产生一定的延时。
睡眠函数:用于使微控制器进入低功耗模式,降低功耗。
串口发送和接收函数:用于串口通信的发送和接收数据。
ADC 读取函数:用于读取ADC转换的结果。
GPIO 操作函数:用于控制GPIO引脚的电平高低或读取引脚的电平状态。
STM32库函数汇总1.GPIO初始化函数 第1个参数设置GPIO端⼝,第⼆个为结构体设置模式 GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct); 2.读取输⼊电平函数 uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin); 读取某个GPIO输⼊的电平,实际操作IDR寄存器,有返回值 uint8_t GPIO_ReadInputData(GPIO_TypeDef* GPIOx); 读取⼀组GPIO输⼊的电平,实际操作IDR寄存,有返回值3.读取输出电平函数 uint8_t GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin); 读取某个GPIO输出的电平,实际操作ODR寄存器,有返回值 uint8_t GPIO_ReadOutputData(GPIO_TypeDef* GPIOx);读取某组GPIO输出的电平,实际操作ODR寄存器,有返回值4.设置输出电平函数 GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin); 设置⾼电平实际操作,BSRR寄存器 GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin); 设置低电平,实际操作BRR寄存器5.使能时钟函数 RCC_APB2PeriphColckCmd();6.开启重映射时钟 GPIO_PinRemapConfig(GPIO_Remap_USART1, ENABLE);参数1可以是串⼝,SWJ等很多种类型7.设置中断优先级分组 void NVIC_PriorityGroupConfig(uint32_t NVIC_PriorityGroup); 在misc.c⽂件中8.设置抢占优先级和响应优先级 void NVIC_Init(NVIC_InitTypeDef* NVIC_InitStruct);需要设置通道,抢占优先级,响应优先级,使能通道等9.串⼝相关函数 void USART_Init();串⼝初始化:波特率,数据字长,奇偶校验,硬件流控以收发使能 void USART_Cmd(形参1,形参2);使能串⼝,形参1是串⼝位,形参2是ENABLE; void USART_ITConfig(形参1,形参2,形参3);使能中断,形参1是串⼝位,形参2是要开启中断的类型,形参3是ENABLE; void USART_SendData(形参1,形参2);发送数据到串⼝,DR,形参1是串⼝位,形参2是要发送是数据 uint16_t USART_ReceiveData(形参1);接收数据,从DR读取接收到的数据,形参1值是串⼝位 FlagStatus USART_GetFlagStatus();获取状态标志位 void USART_ClearFlag();清除状态标志位 ITStatus USART_GetITStatus(形参1,形参2)获取中断标志位;参数1值是串⼝位,参数2是要获取的状态 void USART_ClearITPendingBit();清除中断状态标志位 USART1_IRQHandler();USART中断函数,产⽣中断后进⼊,函数在核⼼⽂件中;10.外部中断函数 GPIO_EXTILineConfig(参数1,参数2);设置中断线的映射关系,参数1与参数2为要中断的IO EXTI_Init();初始化外部中断线,触发⽅式, EXTI_GetITStatus();判断中断状态是否发⽣ EXTI_ClearlTPendingBit();清除中断线上的标志位11.独⽴看门狗实验 IWDG_WriteAccessCmd(uint16_t IWDG_WriteAccess);形参后⾯跟ENABLE,取消写保护 IWDG_SetPrescaler(uint8_t IWDG_Prescaler);设置预分频系数 IWDG_SetReload(uint16_t Reload);设置重装载值 IWDG_Enable();使能看门狗 IWDG_ReloadCounter();喂狗12.窗⼝看门狗 RCC_APB1PeriphClockCmd(RCC_APB1Periph_WWDG, ENABLE);使能窗⼝看门狗 WWDG_SetPrescaler();设置预分频系数 WWDG_SetWindowValue();设置上窗⼝值 WWDG_EnableIT(); 开启窗⼝看门狗中断 NVIC_Init();中断初始化 WWDG_Enable();使能看门狗,设置初始计数器值 WWDG_SetCounter();喂狗 设置计数器值 WWDG_IRQHandler();编写中断服务函数13.通⽤定时器 TIM_TimeBaseInit(TIM3, &TIM_Timesture); 初始化通⽤定时器 TIM_GetITStatus(TIM3,TIM_IT_Update); 获取定时器标志位发⽣中断后标志位置1 SET TIM_ClearITPendingBit(TIM3,TIM_IT_Update);清除定时器标志位 TIM_ITConfig(TIM3, TIM_IT_Update,ENABLE);开启定时器中断 TIM_Cmd(TIM3, ENABLE); 使能通⽤定时器。
stm32 库函数pa0的使用方法如何使用STM32库函数中的PA0引脚。
在STM32的开发中,使用库函数是一种比较方便的方法。
STM32库函数提供了丰富的功能,方便开发者进行开发。
在具体使用时,我们可以根据需要选择库函数中提供的功能。
本文将介绍如何使用库函数中的PA0引脚。
一、PA0引脚的概述PA0引脚是STM32系列中的一个GPIO引脚,它的PID号为0。
PA0引脚连接的是微控制器的GPIO端口A的第0个引脚。
在STM32的使用中,PA0引脚可以连接各种不同的外设,例如按键、LED等。
由于这些外设往往只是对PA0引脚的电平状态进行读取或控制,因此使用PA0引脚所需的代码比较简单。
二、获取用户按键输入PA0引脚常用于获取用户的按键输入,我们可以使用库函数的GPIO_ReadInputDataBit()函数来读取PA0引脚的状态。
而在代码的编写过程中,主要有以下几个步骤:1.初始化GPIO首先,我们需要对PA0引脚进行初始化。
在初始化时,我们需要设置GPIO模式、GPIO速度、GPIO的输入输出类型、GPIO上拉/下拉等参数。
初始化PA0引脚为输入模式GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);使能GPIOA时钟GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;选择PA0引脚GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;设置为输入模式,并开启上拉GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA, &GPIO_InitStructure);初始化GPIO2.读取GPIO状态初始化之后,我们就可以使用GPIO_ReadInputDataBit()函数来读取PA0引脚的状态。
使用库函数进行STM32的产品开发无疑可以节省大量时间。
下面将介绍GPIO初始化所用到的库函数
以最常用的GPIO设备的初始化函数为例,如下程序段一:
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_4;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_Init(GPIOA , &GPIO_InitStructure)
这是一个在STM32的程序开发中经常使用到的GPIO初始化程序段,其功能是将GPIOA.4口初始化为推挽输出状态,并最大翻转速率为50MHz。
下面逐一分解:
l
首先是1,该语句显然定义了一个GPIO_InitTypeDef类型的变量,名为
GPIO_InitStructure,则找出GPIO_InitTypeDef的原型位于“stm32f10x_gpio.h”文件,原型如下:
typedef struct
{
u16 GPIO_Pin;
GPIOSpeed_TypeDef GPIO_Speed;
GPIOMode_TypeDef GPIO_Mode;
}GPIO_InitTypeDef;
由此可知GPIO_InitTypeDef是一个结构体类型同义字,其功能是定义一个结构体,该结构体有三个成员分别是u16类型的GPIO_Pin、GPIOSpeed_TypeDef 类型的GPIO_Speed和GPIOMode_TypeDef 类型的GPIO_Mode。
继续探查GPIOSpeed_TypeDef和GPIOMode_TypeDef 类型,在“stm32f10x_gpio.h”文件中找到对GPIOSpeed_TypeDef的定义:typedef enum
{
GPIO_Speed_10MHz = 1,
GPIO_Speed_2MHz,
GPIO_Speed_50MHz
}GPIOSpeed_TypeDef;
则可知GPIOSpeed_TypeDef枚举类型同一只,其功能是定义一个枚举类型变量,该变量可表示GPIO_Speed_10MHz、GPIO_Speed_2MHz和
GPIO_Speed_50MHz三个含义(其中GPIO_Speed_10MHz已经定义为1,读者必须知道GPIO_Speed_2MHz则依次被编译器赋予2,而
GPIO_Speed_50MHz为3)。
同样也在“stm32f10x_gpio.h”文件中找到对GPIOMode_TypeDef的定义:typedef enum
{
GPIO_Mode_AIN = 0x0,
GPIO_Mode_IN_FLOATING = 0x04,
GPIO_Mode_IPD = 0x28,
GPIO_Mode_IPU = 0x48,
GPIO_Mode_Out_OD = 0x14,
GPIO_Mode_Out_PP = 0x10,
GPIO_Mode_AF_OD = 0x1C,
GPIO_Mode_AF_PP = 0x18
}GPIOMode_TypeDef;
这同样是一个枚举类型同义字,其成员有GPIO_Mode_AIN、
GPIO_Mode_AF_OD等(也可以轻易判断出这表示GPIO设备的工作模式)。
至此对程序段一的○1解析可以做一个总结:该行定义一个结构体类型的变量GPIO_InitStructure,并且该结构体有3个成员,分别为GPIO_Pin、GPIO_Speed和GPIO_Mode,并且GPIO_Pin表示GPIO设备引脚
GPIO_Speed表示GPIO设备速率和GPIO_Mode表示GPIO设备工作模式。
接下来是2,此句是一个赋值语句,把GPIO_Pin_4赋给GPIO_InitStructure 结构体中的成员GPIO_Pin,可以在“stm32f10x_gpio.h”文件中找到对
GPIO_Pin_4做的宏定义:
#define GPIO_Pin_4 ((u16)0x0010)
因此○2的本质是将16位数0x0010赋给GPIO_InitStructure结构体中的成
员GPIO_Pin。
3语句和2相似将GPIO_Speed_50MHz赋给GPIO_InitStructure结构体中的成员GPIO_Speed,但注意到此处GPIO_Speed_50MHz只是一个枚举变量,并非具体的某个值。
4语句亦和2语句类似,把GPIO_Mode_Out_PP赋给GPIO_InitStructure 结构体中的成员GPIO_Mode,从上文可知GPIO_Mode_Out_PP的值为
0x10。
5是一个函数调用,即调用GPIO_Init函数,并提供给该函数2个参数,分别为GPIOA和&GPIO_InitStructure,其中&GPIO_InitStructure表示结构体变量GPIO_InitStructure的地址,而GPIOA则在“stm32f10x_map.h”文件中找到定义:
#ifdef _GPIOA
#define GPIOA ((GPIO_TypeDef *) GPIOA_BASE)
#endif
此三行代码是一个预编译结构,首先判断是否定义了宏_GPIOA。
可以在“stm32f10x_conf.h”中发现对_GPIOA的定义为:
#define _GPIOA
这表示编译器会将代码中出现的GPIOA全部替换为((GPIO_TypeDef *) GPIOA_BASE)。
从该句的C语言语法可以判断出((GPIO_TypeDef *) GPIOA_BASE)的功能为将GPIOA_BASE强制类型转换为指向
GPIO_TypeDef类型的结构体变量。
如此则需要找出GPIOA_BASE的含义,
依次在“stm32f10x_map.h”文件中找到:
#define GPIOA_BASE (APB2PERIPH_BASE + 0x0800)
和:
#define APB2PERIPH_BASE (PERIPH_BASE + 0x10000)
还有:
#define PERIPH_BASE ((u32)0x40000000)
明显GPIOA_BASE表示一个地址,通过将以上3个宏展开可以得到:
GPIOA_BASE = 0x40000000 + 0x10000 + 0x0800
此处的关键便在于0x40000000、0x10000和0x0800这三个数值的来历。
读者应该通过宏名猜到了,这就是STM32微控制器的GPIOA的设备地址。
通过查阅STM32微控制器开发手册可以得知,STM32的外设起始基地址为0x40000000,而APB2总线设备起始地址相对于外设基地址的偏移量为
0x10000,GPIOA设备相对于APB2总线设备起始地址偏移量为0x0800。
对○5句代码进行一个总结:调用GPIO_Init函数,并将STM32微控制器的GPIOA设备地址和所定义的结构体变量GPIO_InitStructure的地址传入。
更多的库函数可以去stm32f10x_gpio.h 头文件去查看。