stm32f10x_gpio.h
时间: 2023-09-09 13:09:05 浏览: 174
stm32f10x.h
引用[1]:上一节看完手册以后,你或许已经明白怎么配置一个GPIO接口让它实现输入输出的各种功能了。但是如果我问起你:如果要让GPIOA端口的P0和P1配置成推挽输出10MHz模式,你该怎么做,你会做些什么? 绝大多数人做的事情应该还是翻开手册里GPIO_CRL的寄存器定义,然后照着手册编程。GPIO外设的功能比较简单,需要配置的功能不算太多,这么做没什么难度。但有些外设的配置寄存器有许许多多控制位,比如下面这位: 这是串口通信外设的控制寄存器1(对没错,还有个控制寄存器2),里面的14个有效位都与通信的各种规则和状态密切相关,通过查手册一位一位地改显然有点不太经济且不甚直观。 标准固件库函数就是为这个而生的。ST官方将常用的对外设的操作和外设的各种状态封装成可读性更高的函数和结构供用户使用。我们就着GPIIO的库函数来看看,这玩意到底有什么魔力。 请从固件库文件夹里找出stm32f10x_gpio.h,stm32f10x_gpio.c和stm32f10x_rcc.h、stm32f10x_rcc.c四个文件,添加到寄存器编程的模板里。 并且在你的main里包含两个.h。打开这gpio的两个文件,里面虽然看着纷繁,但核心思路我们一讲便通。 固件库版的外设初始化 。 引用[2]:打开stm32f10x_gpio.h,用Ctrl F找到“GPIO_Exported_Functions”,其下便是所有的gpio库函数了。 GPIO_Init函数就是初始化外设使用的函数了。有一个形参类型“GPIO_InitTypeDef”我们没有见过,你可以在上边右键单击后选择“Go to Defnition”查看它的内容: typedef struct { uint16_t GPIO_Pin; /*!< Specifies the GPIO pins to be configured. This parameter can be any value of @ref GPIO_pins_define */ GPIOSpeed_TypeDef GPIO_Speed; /*!< Specifies the speed for the selected pins. This parameter can be a value of @ref GPIOSpeed_TypeDef */ GPIOMode_TypeDef GPIO_Mode; /*!< Specifies the operating mode for the selected pins. This parameter can be a value of @ref GPIOMode_TypeDef */ }GPIO_InitTypeDef; 。 引用[3]:void Button_Config(void){ GPIO_InitTypeDef GPIO_InitStructure; /* Enable GPIOD clock */ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE); /* Configure PD.03, PD.04 as output push-pull */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3 | GPIO_Pin_4 ; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOD, &GPIO_InitStructure);} 。
问题:stm32f10x_gpio.h文件中有什么内容?
回答: 在stm32f10x_gpio.h文件中,我们可以找到"GPIO_Exported_Functions",其下是所有的GPIO库函数。其中,GPIO_Init函数是用于初始化外设的函数。在该文件中还定义了一个名为GPIO_InitTypeDef的结构体,该结构体包含了GPIO_Pin、GPIO_Speed和GPIO_Mode等参数,用于配置GPIO引脚的功能和模式。[2]
阅读全文