超经典的STM32学习笔记——第一章GPIO口.docVIP

  • 11
  • 0
  • 约8.53千字
  • 约 11页
  • 2018-04-10 发布于江西
  • 举报

超经典的STM32学习笔记——第一章GPIO口.doc

超经典的STM32学习笔记——第一章GPIO口.doc

固件库中与GPIO有关的函数主要有: 函数名描述GPIO_Init根据GPIO_InitStruct中指定的参数初始化外设GPIOx寄存器GPIO_ReadInputDataBit读取指定端口管脚的输入GPIO_ReadInputData读取指定的GPIO端口输入GPIO_ReadOutputDataBit读取指定端口管脚的输出GPIO_ReadOutputData读取指定的GPIO端口输出GPIO_SetBits设置指定的数据端口位GPIO_ResetBits清除指定的数据端口位GPIO_WriteBit设置或者清除指定的数据端口位GPIO_Write向指定GPIO数据端口写入数据1.1函数GPIO_Init 函数名GPIO_Init函数原形void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct)功能描述根据GPIO_InitStruct中指定的参数初始化外设GPIOx寄存器输入参数1GPIOx:x可以是A,B,C,D或者E,来选择GPIO外设输入参数2GPIO_InitStruct:指向结构GPIO_InitTypeDef的指针,包含了外设GPIO的配置信息参阅Section:GPIO_InitTypeDef查阅更多该参数允许取值范围输出参数无返回值无先决条件无被调用函数无1.1.1:GPIO_TypeDef为一结构体: typedef struct { __IO uint32_t CRL; // 端口配置低寄存器 __IO uint32_t CRH; // 端口配置高寄存器 __IO uint32_t IDR; // 端口输入数据寄存器 __IO uint32_t ODR; __IO uint32_t BSRR; __IO uint32_t BRR; __IO uint32_t LCKR; } GPIO_TypeDef; GPIOx为一宏定义: #define GPIOA ((GPIO_TypeDef *) GPIOA_BASE) 其中GPIOA_BASE=0即PA口的起始地址,#define GPIOA ((GPIO_TypeDef *) GPIOA_BASE)这句语句的作用就是将GPIOA指定到PA口的入口地址中,也就是说将PA口的寄存器组取名为GPIOA。 1.1.2:GPIO_InitTypeDef为结构体: typedef struct { uint16_t GPIO_Pin; GPIOSpeed_TypeDef GPIO_Speed; GPIOMode_TypeDef GPIO_Mode; }GPIO_InitTypeDef; 其中GPIO_Pin可取的值: GPIO_Pin描述GPIO_Pin_None无管脚被选中 GPIO_Pin_0选中管脚0GPIO_Pin_15选中管脚15GPIO_Pin_All选中全部管脚GPIO_Speed可取的值: GPIO_Speed描述GPIO_Speed_10MHz最高输出速率10MHzGPIO_Speed_2MHz最高输出速率2MHzGPIO_Speed_50MHz最高输出速率50MHzGPIO_Mode可取的值: GPIO_Mode描述GPIO_Mode_AIN模拟输入GPIO_Mode_IN_FLOATING浮空输入GPIO_Mode_IPD下拉输入GPIO_Mode_IPU上拉输入GPIO_Mode_Out_OD开漏输出GPIO_Mode_Out_PP推挽输出GPIO_Mode_AF_OD复用开漏输出GPIO_Mode_AF_PP复用推挽输出表面看来函数GPIO_Init只有两个输入参数,实则4个输入参数。第二个结构体中包括了三个参数,这三个参数分别是对管脚的端口,速度,和模式进行配置。这三个参数的值其实就是一些宏定义的数值。对这三个参数的选择就相当于对对应的寄存器进行配置。第一个结构体是寄存器映射,它定义在文件“stm32f10x.h”中,他的作用就是将与管脚有关的寄存器名字与硬件地址对应起来,例如寄存器CRL就相当于地址:0第一与第二个结构体相结合并可以对某端口进行初始化了。 1.1.3:例:配置PA口为浮空输入 //定义一个名为GPIO_InitStructure的GPIO_InitTypeDef型结构体 GPIO_InitTypeDef GP

文档评论(0)

1亿VIP精品文档

相关文档