STM32笔记(2)GPIO介绍及IO口操作(改)

您所在的位置:网站首页 STM32有几种基本时钟信号 STM32笔记(2)GPIO介绍及IO口操作(改)

STM32笔记(2)GPIO介绍及IO口操作(改)

2024-07-02 21:48:10| 来源: 网络整理| 查看: 265

文章目录 GPIO简介工作方式相关寄存器介绍 IO 操作步骤IO口三种操作细解 附录:C语言相关偏移地址与绝对地址

GPIO简介

GPIO:每个连接到I/O总线上的设备都有自己的I/O地址集,即所谓的I/O端口。类似51单片机的P0~P3,但与51单片机不同的是,对stm32的GPIO来说,使用前需要设置其工作方式。。STM32 的每个 IO 端口都有 7 个寄存器来控制其工作方式,而每一个寄存器都需要用32bit来控制。在STM32中,一组GPIO有16个IO口。

端口位基本结构:

在这里插入图片描述

TTL肖特基触发器作用:将相对缓慢变化的模拟信号变成矩形信号,便于后面读取。 (这里有一个阈值电压的概念,比如从低到高达到多少才会导通,从高到底多少才会关闭)

工作方式

stm32的IO口一共有8种工作方式: 1、 输入浮空:读取相应外部的电平,但当引脚不输入时,相当于悬空,输入电平未知,范围为0~VCC。 2、 输入上拉:保证在无信号输入时输入端的电平为高电平。而在信号输入为低电平时输入端的电平也为低电平。 3、 输入下拉:保证在无信号输入时输入端的电平为低电平。而在信号输入为高电平时输入端的电平也为高电平。 4、 模拟输入:传统方式的输入,将0,1的二进制数字信号,通过数模转换,变成模拟信号,应用ADC模拟输入,或者低功耗下省电。简单来说,就是将原本的高低电平转换为范围为0~VCC信号。 5、 开漏输出:IO口输出0接地,输出1由外接电阻控制为0/1. 6、 推挽输出:低电平输出为0,高电平输出为VCC 链接:用三极管很好地说明上面两者输出 7、 复用推挽输出:用作串口的输出。 8、 复用开漏输出 :用在IIC。 7和8两种输出共同点:可以理解为GPIO口被用作第二功能时的配置情况(即并非作为通用IO口使用),给内部外设使用的推挽,开漏输出,此时端口必须配置为复用功能输出模式。

而每个 GPIO 端口是通过 CNF[1:0]和 MODE[1:0]配置为 8 种模式中的一种, STM32 的 IO 口位配置表 : 在这里插入图片描述 STM32 输出模式配置 :

在这里插入图片描述

相关寄存器介绍

配置模式的 2 个 32 位的端口配置寄存器 CRL 和 CRH; 2 个 32 位的数据寄存器 IDR 和 ODR; 1 个 32 位的置位/复位寄存器BSRR;一个 16 位的复位寄存器 BRR; 1 个 32 位的锁存寄存器 LCKR。

1.CRL 和 CRH(控制着每个 IO 口的模式及输出速率) 在这里插入图片描述 CRH 的作用和 CRL 完全一样,只是 CRL 控制的是低 8 位输出口,而 CRH 控制的是高 8位输出口。

2.IDR 和 ODR IDR:IDR 是一个端口输入数据寄存器,只用了低 16 位。该寄存器为只读寄存器,并且只能以16 位的形式读出。 在这里插入图片描述 在固件库中操作 IDR 寄存器读取 IO 端口数据是通过GPIO_ReadInputDataBit 函数实现的:

uint8_tGPIO_ReadInputDataBit(GPIO_TypeDef*GPIOx,uint16_tGPIO_Pin)

比如读取 GPIOA.5 的电平状态,相关函数是:

GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_5);

返回值是 1(Bit_SET)或者 0(Bit_RESET);

ODR:ODR 是一个端口输出数据寄存器,也只用了低 16 位。该寄存器为可读写,从该寄存器读出来的数据可以用于判断当前 IO 口的输出状态。而向该寄存器写数据,则可以控制某个 IO 口的输出电平。 在这里插入图片描述 在固件库中设置 ODR 寄存器的值来控制 IO 口的输出状态是通过函数GPIO_Write 来实现的:

void GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal);

该函数一般用来对一个 GPIO 的多个端口设值。

3.BSRR:BSRR 寄存器是端口位设置/清除寄存器。 该寄存器和 ODR 寄存器具有类似的作用,都可以用来设置 GPIO 端口的输出位是 1 还是 0。 在这里插入图片描述 4. BRR: BRR 寄存器是端口位清除寄存器。该寄存器的作用跟 BSRR 的高 16 位相同。

5.LCKR(不常用)

在这里插入图片描述

IO 操作步骤

1) 使能 IO 口时钟。调用函数为 RCC_APB2PeriphClockCmd()。

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOX,ENABLE);//GPIOX 使能时钟,X=A~E

2) 初始化 IO 参数。调用函数 GPIO_Init();(确定操作的IO口)

void GPIO_Init(GPIO_TypeDef*GPIOx,GPIO_InitTypeDef*GPIO_InitStruct);

其中,两个参数分别为:配置引脚组(GPIO_TypeDef* GPIOx),配置的参数( GPIO_InitTypeDef* GPIO_InitStruct)。

3) 操作 IO。(固件库操作,寄存器操作,位操作)

IO口三种操作细解

1.固件库操作

GPIO_InitStructure.GPIO_Mode= GPIO_Mode_Out_PP; //模式选择为推挽输出 GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5;//确定选位为第五个IO口 GPIO_InitStructure.GPIO_Speed= GPIO_Speed_50MHz;//速率选择为50M GPIO_Init(GPIOX,&GPIO_InitStructure);//初始化GPIOX GPIO_SetBits(GPIOX,GPIO_Pin_5);//设置该位为高电平 GPIO_ResetBits(GPIOX,GPIO_Pin_5);//设置该位为低电平

八种模式在 MDK 中是通过一个枚举类型定义的:

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;

IO 口速度设置, 有三个可选值,在 MDK 中同样是通过枚举类型定义 :

typedef enum { GPIO_Speed_10MHz = 1, GPIO_Speed_2MHz, GPIO_Speed_50MHz }GPIOSpeed_TypeDef;

在模式设置完成后,可通过其它库函数进行IO口设置: 控制IDR(读取输入电平值):

uint_8t GPIO_ReadIputDataBit(GPIO_TypeDef*GPIOx,uint16_t GPIO_Pin)

控制ODR(将某个IO口置为高电平或低电平):

void GPIO_Write(GPIO_TypeDef*GPIOx,uint16_t PortVal)

控制BSRR与BRR:

void GPIO_SetBits(GPIO_TypeDef*GPIOx,uint16_t GPIO_Pin)//将IO口置为高电平 void GPIO_ResetBits(GPIO_TypeDef*GPIOx,uint16_t GPIO_Pin)//将IO口置为低电平

2.寄存器操作 完整IO口初始化示例:

void LED_Init(void) { RCC->APB2ENR |= 1ODR|=1CRL|=0X0000 0300;//设置PD2推挽输出 GPIOD->ODR|=1


【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭