ENABLE);// 配置结构体GPIO_InitStructureGPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;// 设置GPIO端口号为5GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;// 设置端口模式为推挽输出GPIO_InitStructure.GPIO_Speed = GPIO_Speed_
每个GPIO端口有两个32位置的寄存器(GPIOx_CRL,GPIOx_CRH),两个32位数据寄存器 (GPIOx_IDR和GPIOx_ODR),32位置/复位寄存器(GPIOx_BSRR),16个复位寄存器(GPIOx_BRR)和一个32锁定寄存器(GPIOx_LCKR)。 根据数据手册中列出的每个数据I/O端口的特定硬件特性, GPIO软件可以将端口的每个位置分别分配到多种模式(八...
首先定义一个结构体变量,然后把该结构体变量的一些参数设置一下。 这里我们需要用PB10引脚,于是设置GPIO_Pin是Pin10。 需要推挽输出于是设置GPIO_Mode为GPIO_Mode_AF_PP。 需要PB10在高速状态下运行于是设置GPIO_Speed为50MHz。 经过以上的设置我们就把结构体变量GPIO_InitStructure“填充”完成了。 (3)使用上一步设...
GPIO_InitTypeDef 结构体变量。该结构体是用于配置 GPIO端口的一种数据类型,包含了各种控制引脚模式、输入/输出方向、输出速度和上拉/下拉等属性的成员变量。 默认值包括: 引脚GPIO_Pin:0 速度GPIO_Speed: GPIO_Speed_2MHz。 模式GPIO_Mode: GPIO_Mode_IN_FLOATING,浮空输入。 使用方式:将一个结构体设置为默认值...
/*注意PC13 PC14 PC15通过电源开关进行供电,只能吸收3mA电流,输出只能工作在2MHz,最大驱动30pF,不能驱动LED*/ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13 |GPIO_Pin_14 | GPIO_Pin_15; //PC13=SH/LD,PC14=SCLK,PC15空 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; ...
GPIO 模块由端口 GPIOA、GPIOB、GPIOC 等多个独立的子模块构成。 例如:端口 GPIOA 包括 PA0 ~ PA15 这 16 个引脚,通过 10 个硬件寄存器控制引脚工作。 引脚(PIN):对应微控制器的一个管脚,归属于端口,由端口寄存器的对应位控制。 PA0,属于端口 GPIOA,输出电平由端口 GPIOA 的输出数据寄存器 GPIOA_ODR ...
(a)、GPIO端口的引脚:可选范围为GPIO_Pin_0~GPIO_Pin_15,也可以选所有引脚GPIO_Pin_All。 (b)、GPIO的端口模式:用于设置GPIO的端口模式,可选的端口模式如下。 typedefenum{ GPIO_Mode_IN =0x00,//普通IO口输入GPIO_Mode_OUT =0x01,//普通IO口输出GPIO_Mode_AF =0x02,//管脚复用功能GPIO_Mode_AN =...
例如:端口 GPIOA 包括 PA0 ~ PA15 这 16 个引脚,通过 10 个硬件寄存器控制引脚工作。 引脚(PIN):对应微控制器的一个管脚,归属于端口,由端口寄存器的对应位控制。 PA0,属于端口 GPIOA,输出电平由端口 GPIOA 的输出数据寄存器 GPIOA_ODR 的第 0 位决定。
图4 外部中断/事件 GPIO 映射 从图4中可以看出,由于STM32每个GPIO端口都有16个pin引脚,因此EXTI_Line0~15对应的是引脚pin0~pin15。例如EXTI_Line0对应GPIOA0~GPIOI0,因此类推EXTI_Line1对应GPIOA1~GPIOI1,因此每个EXTI_Line可以对应最多9个pin引脚,具体映射到那个pin引脚上,需要进行相应的配置。
selected */#define GPIO_PIN_MASK0x0000FFFFu/* PIN mask for assert test */ 他们都定义在<STM32F1xx_hal_gpio.H>中,我们可以得知,enum是一个枚举类型,后面的参数都是前一个参数代表的值+1,如果首个参数不初始化默认为0,否则以初始化的值开始+1,每个值都可以初始化,并以初始化的值为准。这样我们就...