STM32IO端口相关配置

您所在的位置:网站首页 输入输出端口分配表 STM32IO端口相关配置

STM32IO端口相关配置

#STM32IO端口相关配置| 来源: 网络整理| 查看: 265

STM32 IO口可以配置的8种模式: 输入浮空;输入上拉;输入下拉;模拟输入;开漏输出;推挽输出;推挽输出推挽式复用输出;开漏复用功能; I/O 5V兼容:

I/O Level 标 FT 的就是 5V 电平兼容的 ;

I/O 控制寄存器说明: 2 个 32 位的端口配置寄存器 CRL 和 CRH;2 个 32 位的数据寄存器 IDR 和 ODR;1 个 32 位的置位/复位寄存器BSRR;1个 16 位的复位寄存器 BRR;1 个 32 位的锁存寄存器 LCKR。 STM32 I/O 配置表: 功能配置模式CNF1CNF0PxODR寄存器通用输出推挽式(Push-Pull)000或1通用输出开漏(Open-Drain)010或1复用功能输出推挽式(Push-Pull)10不使用复用功能输出开漏(Open-Drain)11不使用输入模拟输入00不使用输入浮空输入01不使用输入下拉输入100输入上拉输入101 STM32输出模式配置表: MODE1MODE0意义模式00保留输入01最大输出速度为10MHz输出10最大输出速度为20MHz输出11最大输出速度为50MHz输出 常见的I/O配置(CRL/CRH): CRL/CRH寄存器值功能使用0X0模拟输入模式ADC0X3推挽输出模式输出口,50M 速率0X8上/下拉输入模式输入口0XB复用输出使用 IO 口的第二功能, 50M 速

CRH控制高8位I/O口,CRL控制低8位I/O口。

GPIO 初始化函数:

GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct); 上述函数有两个参数:

第一个用来指定GPIO,取值范围为GPIOA~GPIOG;第二个用来初始化参数结构体(GPIO_InitTypeDef)指针; 通过初始化结构体初始化GPIO: GPIO_InitTpyeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; // 端口配置 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //速度50MHz GPIO_Init(GPIOB, &GPIO_InitStructure); //根据设定的参数配置 GPIO 8个模式的枚举类型定义: 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; I/O 口速度枚举类型定义: typedef enum { GPIO_Speed_10MHz = 1, GPIO_Speed_2MHz, GPIO_Speed_50MHz }GPIOSpeed_TypeDef; 端口输入数据寄存器 (IDR): 位功能31:16保留,始终为015:0IDR y y y[15:0]:端口输入数据 ( y = 0....15 y=0....15 y=0....15)

要想知道某个 IO 口的电平状态,只要读这个寄存器,再看某个位的状态就可以。 这些位只能以字(16位)的形式读出。

操作 IDR 寄存器读取 IO 端口数据 :

uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint6_t GPIO_Pin) 例如要读GPIOA.5的电平状态: GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_5);

端口输出数据寄存器 (ODR):

void GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal);

只用了低 16 位;从该寄存器读出来的数据可以用于判断当前 IO 口的输出状态;向该寄存器写数据,则可以控制某个 IO 口的输出电平 ;该函数一次性对一个 GPIO 的多个端口设值; 端口位设置/清除寄存器 (BSRR): 位31:16 BRy: 清除端口x的位y(y=0…15),置1有效;位15:0 BSy: 设置端口x的位y(y=0…15),置1有效;若同时设置BSy和BRy的对应位,BSy位起作用; 例如:要设置 GPIOA 的第 1 个端口值为 1,则向BSRR 的低 16 位对应位写 1 : GPIOA->BSRR=1BSRR=GPIO_Pin_5; //设置 GPIOB.5 输出 0,等同 LED0=0;


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3