STM32单片机GPIO寄存器的功能解析

合集下载

关于stm32的GPIO基础介绍

关于stm32的GPIO基础介绍

STM32通用GPIO的基础认识:STM32是一款基于ARM Cortex-M内核的微控制器,通用GPIO是STM32中最常用的外设之一。

通用GPIO可以在系统中连接外部器件,如LED、传感器和开关等。

以下是通用GPIO的基础知识:引脚复用:每个STM32芯片都有多个GPIO引脚,这些引脚可以被分配为不同的功能,如通用输入输出(GPIO)、SPI、I2C、USART、TIM等。

引脚复用功能允许单个引脚在不同的模式下使用。

引脚模式:每个GPIO引脚可以配置为输入或输出模式。

在输入模式下,引脚可以被用来读取外部信号,而在输出模式下,引脚可以被用来控制外部器件。

引脚状态:在输出模式下,引脚可以设置为高电平或低电平。

在输入模式下,可以读取引脚的状态。

引脚中断:STM32的GPIO引脚可以配置为触发中断。

例如,在输入模式下,可以配置引脚以在特定事件(如上升沿或下降沿)发生时触发中断。

这可以用于实时响应外部事件。

输出驱动能力:STM32的GPIO引脚可以配置不同的输出驱动能力。

输出驱动能力决定了引脚输出的电流大小。

通常,输出驱动能力越大,引脚可以驱动的负载越大。

内部上拉和下拉:STM32的GPIO引脚可以配置内部上拉或下拉电阻。

这些电阻可以用于保持引脚状态,并防止误触发或外部干扰。

速度和模式:STM32的GPIO引脚可以配置不同的速度和模式,以满足不同的应用需求。

速度指的是引脚切换状态的速度,模式包括推挽模式、开漏模式和复用模式等。

模拟输入:除了数字输入和输出,一些STM32的GPIO引脚还可以用作模拟输入。

这些引脚可以读取模拟信号,例如传感器输出的电压。

外部中断线:STM32的GPIO引脚可以通过外部中断线连接到中断控制器,以便实现更快的中断响应。

AFIO(Alternative Function Input Output)寄存器:AFIO寄存器是一个重要的寄存器,它用于设置GPIO的引脚复用和其他一些外设的功能。

STM32中几个GPIO寄存器总结

STM32中几个GPIO寄存器总结

OPA1632 全差动 I/O 音频放大器 音频放大器
OPA2604-Q1 汽车类双路 FET 输入低失真运算放大器 音频放大器
PCM1600 104dB SNR 6 通道音频 DAC 音频转换器
PCM1601 104dB SNR 6 通道音频 DAC 音频转换器
PCM1602 105dB SNR 6 通道音频 DAC 音频转换器
DSD1792 132dB SNR 最高性能立体声音频 DAC(软件控制) 音频转换器
DSD1792A 132dB SNR 最高性能立体声音频 DAC(软件控制) 音频转换器
DSD1793 113dB SNR 立体声音频 DAC(软件控制R 最高性能立体声音频 DAC(硬件控制) 音频转换器
PCM1609 105dB SNR 8 通道音频 DAC 音频转换器
PCM1609A 105dB SNR 8 通道音频 DAC 音频转换器
PCM1680 105dB SNR 8 通道音频 DAC 音频转换器
GPIOA->CRH&=0XFFFFFFF0;//清除该位原来的设置
GPIOA->CRH|=0X00000003;//PA8 推挽输出
GPIOA->ODR|=1<<8; //PA8 输出高
由以上代码看出,PA8设置成了推挽输出。大家都知道一个端口可以输出高电平,也可以输出低电平,而GPIOA->ODR|=1<<8; 这个表达式就把PA8设置成了在空闲的时候输出高电平;GPIOA->ODR|=0<<8; 这个表达式,把PA8设置成了在空闲的时候输出低电平。
一.CRH和CRL的使用:
CRH和CRL的使用基本相同,CRH用于控制GPIOX(X表示A---G)的高8位(Pin15---Pin8),而CRL用于控制GPIOX(X表示A---G)的低8位(Pin7----Pin0)。

stm32GPIO口工作原理详细解释

stm32GPIO口工作原理详细解释

STM32的GPIO介绍STM32引脚说明GPIO是通用输入/输出端口的简称,是STM32可控制的引脚。

GPIO的引脚与外部硬件设备连接,可实现与外部通讯、控制外部硬件或者采集外部硬件数据的功能。

STM32F103ZET6芯片为144脚芯片,包括7个通用目的的输入/输出口(GPIO)组,分别为GPIOA、GPIOB、GPIOC、GPIOD、GPIOE、GPIOF、GPIOG,同时每组GPIO口组有16个GPIO口。

通常简略称为PAx、PBx、PCx、PDx、PEx、PFx、PGx,其中x为0-15。

STM32的大部分引脚除了当GPIO使用之外,还可以复用位外设功能引脚(比如串口),这部分在【STM32】STM32端口复用和重映射(AFIO辅助功能时钟)中有详细的介绍。

GPIO基本结构每个GPIO内部都有这样的一个电路结构,这个结构在本文下面会具体介绍。

这边的电路图稍微提一下:保护二极管:IO引脚上下两边两个二极管用于防止引脚外部过高、过低的电压输入。

当引脚电压高于VDD时,上方的二极管导通;当引脚电压低于VSS时,下方的二极管导通,防止不正常电压引入芯片导致芯片烧毁。

但是尽管如此,还是不能直接外接大功率器件,须加大功率及隔离电路驱动,防止烧坏芯片或者外接器件无法正常工作。

P-MOS管和N-MOS管:由P-MOS管和N-MOS管组成的单元电路使得GPIO具有“推挽输出”和“开漏输出”的模式。

这里的电路会在下面很详细地分析到。

TTL肖特基触发器:信号经过触发器后,模拟信号转化为0和1的数字信号。

但是,当GPIO引脚作为ADC采集电压的输入通道时,用其“模拟输入”功能,此时信号不再经过触发器进行TTL电平转换。

ADC外设要采集到的原始的模拟信号。

这里需要注意的是,在查看《STM32中文参考手册V10》中的GPIO的表格时,会看到有“FT”一列,这代表着这个GPIO口时兼容3.3V和5V 的;如果没有标注“FT”,就代表着不兼容5V。

(笔记)GPIO基本原理与寄存器配置(STM32篇)

(笔记)GPIO基本原理与寄存器配置(STM32篇)

(笔记)GPIO基本原理与寄存器配置(STM32篇)背景:因ST系列MCU在⾏业中应⽤最⼴,故本⽂以ST的MCU的GPIO进⾏详细讲解每⼀种功能应⽤类型的使⽤。

⼀、STM32F10X 引脚说明STM32F103ZET6⼀共有7组IO⼝,每组IO⼝有16个IO,分别为GPIOA~GPIOG,每组分别为PA0到PA16,STM32F103RCT6⼀个有4组IO⼝,分别为GPIOA到GPIOD,不同的是此芯⽚的GPIOD组只有GPIOD0⾄D2 三个IO⼝,并⾮16个。

这就是常⽤F1系列的芯⽚引脚,其⼤部分引脚不仅可以当作GPIO使⽤,还可以复⽤为外设功能引脚,⽐如说串⼝引脚(USART,TIM 等)。

⼆、GPIO的基本结构和⼯作⽅式I/O端⼝位的基本结构IO脚的基本⼯作⽅式:STM32 的 IO ⼝相⽐ 51 ⽽⾔要复杂得多,所以使⽤起来也困难很多。

⾸先 STM32 的 IO ⼝可以由软件配置成如下 8 种模式:(1)GPIO_Mode_IN_FLOATING 输⼊浮空模式(2)GPIO_Mode_IPU 输⼊上拉模式(3)GPIO_Mode_IPD 输⼊下拉模式(4)GPIO_Mode_AIN 模拟输⼊模式(5)GPIO_Mode_Out_OD 开漏输出模式(6)GPIO_Mode_AF_OD 开漏复⽤输出模式(7)GPIO_Mode_Out_PP 推挽输出模式(8)GPIO_Mode_AF_PP 推挽复⽤输出模式三、GPIO的基本⼯作⽅式讲解♣输⼊浮空模式在此状态下,I/O⼝的电平信号进⼊输⼊数据寄存器,此时的I/O电平信号是不确定的,完全由外部输⼊决定,如果在该引脚悬空(在⽆信号输⼊)的情况下,读取该端⼝的电平是不确定的。

且电压具有不确定性。

♣输⼊上拉模式上拉就是将⼀个不确定的信号拉到⼀个固定的值,如上图所⽰,通过I/O⼝来的信号就被上拉电阻拉到了VDD。

所以,和浮空输⼊相⽐来说,当I/O⼝被悬空的状态下,输⼊端的电平可以保持在⾼电平。

STM32 GPIO 相关寄存器(二)

STM32 GPIO 相关寄存器(二)

STM32 GPIO 相关寄存器(二)STM32 单片机,有了端口才能和外界联系,学会了端口控制,才能更好地利用外设。

建立和外界的联系,发挥自身的优点。

首先介绍一下基本的GPIO相关的寄存器:1,GPIOX_CRL 低8 位端口配置寄存器这个寄存器主要是对配置管脚是输入还是输出:其中1)MODEy[1:0]主要是配置是输入端口还是输出端口的。

配置为输出得时候还可以配置输出的管脚速度等级。

2)CNFy[1:0]主要是两种形式,在端口配置输入的时候,即MODEy[1:0]位00(输入),用来配置输入的模式,主要是模拟输入,浮空输入,上拉模式和下拉模式。

3)CNFy[1:0]在端口配置为输出的时候,用来控制输入的模式。

具体看手册吧。

总得来说,就是MODEy[1:0] 先配置管脚是输入还是输出,是输入就继续配置CNFy[1:0]来配置输出管脚的连接模式。

要是输出的话,就继续配置MODEy[1:0]的管脚速度速度等级,之后再配置管脚的连接模式。

上拉,下拉,推免,开漏等等。

具体运用的时候看看手册就明白了。

2,GPIOX_CRH 高8 位端口配置寄存器和GPIOX_CRH 完全一样,只是端口换成高8 位了。

不说了,看看就明白了!3,GPIOX_ODR 端口输出数据寄存器学过AVR 的都知道,输出的时候有输出数据寄存器,STM32 也一样。

思想COPY 过来,就自然知道了GPIOX_ODR 是做什么的了。

不过要注意的是,这个玩意不能一个位一个位的去操作,还是51 的简单啊,不过原子大哥已经把那个端口映射可操作位段,不明白,还是看自己的吧。

一个GPIOA 端口就16 位,自然的32 位的GPIOX_ODR 就只有低16 位有效了,想输出什么就给这个寄存器赋值就OK 了。

或者用GPIOA->ODR |=(1ODR &=(0BSRR |=(1BSRR |=(1BRR |= (1<<x);7,端口配置锁定寄存器GPIOX_LCKR,锁定了当然就不能修改了。

STM32开发板例程讲解之二:GPIO的描述和配置,GPIOIOTG例程精讲ch...

STM32开发板例程讲解之二:GPIO的描述和配置,GPIOIOTG例程精讲ch...
(二)专门的寄存器(GPIOx_BSRR 和GPIOx_BRR) 实现对GPIO 口的原子操作,即回避了设置或清除I/O端口时的“读-修改-写”操作,使得设置或清 除I/O端口的操作不会被中断处理打断而造成误动作。 (三)每个GPIO 口都可以作为外部中断的输入,便于系统灵活设计。 (四)I/O口的输出模式下,有3种输出速度可选(2MHz 、10MHz 和50MHz) ,这有利于噪声控制。 (五)所有I/O口兼容CMOS和TTL,多数I/O口兼容5V电平。 (六)大电流驱动能力:GPIO 口在高低电平分别为0.4V和VDD-0.4V时,可以提供或吸收8mA电流;如果把输入输出电平分别放宽到1.3V和VDD1.3V时,可以提供或吸收20mA电流。 (七)具有独立的唤醒I/O口。 (八)很多I/O口的复用功能可以重新映射。 (九)GPIO口的配置具有上锁功能,当配置好GPIO口后,可以通过程序锁住配置组合,直到下次芯片复位才能解锁。此功能非常有利于在程序跑飞的 情况下保护系统中其他的设备,不会因为某些I/O口的配置被改变而损坏——如一个输入口变成输出口并输出电流。
#if 0 // 配置所有未使用GPIO引脚为输入模式(浮空输入),这样可以降低功耗,并且提高器件的抗EMI/EMC 的性能
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOD | RCC_APB2Periph_GPIOE, ENABLE);
//armfly :注释掉的原因是当代码在外部存储器运行时,GPIOD,E,F,G部分IO用于FSMC,因此对这些IO不能重置,否则导致取指异常 // GPIO_Init(GPIOD, &GPIO_InitStructure); // GPIO_Init(GPIOE, &GPIO_InitStructure); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB |

STM32GPIO相关寄存器

STM32GPIO相关寄存器

STM32 GPIO 相关寄存器每个GPIO端口有两个32位配置寄存器(GPIOx_CRL,GPIOx_CRH)分别控制每个端口的高八位和低八位,如果IO口是0-7号的话,则写CRL寄存器,如果IO口是8-15号的话,则写CRH寄存器,两个32位数据寄存器(GPIOx_IDR,GPIOx_ODR)一个是只读作输入数据寄存器,一个是只写作输出寄存器,一个32位置位/复位寄存器(GPIOx_BSRR),一个16位复位寄存器(GPIOx_BRR)和一个32位锁定寄存器(GPIOx_LCKR)。

常用的IO端口寄存器只有四个:CRH,CRL,IDR,ODR.数据手册中列出的每个I/O端口的特定硬件特征, GPIO端口的每个位可以由软件分别配置成多种模式。

每个I/O端口位可以自由编程,然而I/0端口寄存器必须按32位字被访问(不允许半字或字节访问)。

另外,STM32的每个端口使用前都要将其时钟使能,STM32的GPIO的时钟统一挂接在APB2上,具体的使能寄存器为RCC_APB2ENR,该寄存器的第2位到第8位分别控制GPIOx(x=A,B,C,D,E,F,G)端口的时钟使能,当外设时钟没有启用时,程序不能读出外设寄存器的数值,如打开PORTA 时钟:RCC—>APB2ENR|=1〈<2; //使能PORTA时钟使能外设时钟后,GPIOA的十六位就可以按照设定的状态工作了,之后就是具体设置哪一位了以第八位为例即高位的首位,在GPIOx_CRH寄存器中进行设置,GPIOA的每一位都有该寄存器的四位来设定相应的参数,这四位中的高两位(CNF0,CNF1)设置GPIO的输入输出模式,低两位(MODE0,MODE1)是设置GPIO的输出频率,具体可以参考STM32参考手册。

GPIOA->CRH&=0XFFFFFFF0; //清掉PA8原来的设置,同时屏蔽其它端口,不影响其它端口的设置GPIOA—〉CRH|=0X00000003;//PA8 推挽输出十六进制中的3 换成二进制 00 11 前两位00表示推挽输出,11代表输出频率50Mhz,若CRH|=0x4,表示模拟输入模式(ADC用),0x3表示推挽输出模式(作输出口用,50M速率),0x8表示上/下拉输入模式(做输入口用),0xB表示复用输出(使用IO口的第二功能,50M速率). 这是对一位的操作,当然也可以多位操作,因为STM32对GPIO操作必须是32位全字操作,设置完成后GPIOA的第8位就可以使用了之后给GPIOA—>ODR=0x xxxx xxxx送数据就行了。

stm32单片机寄存器点灯知识点

stm32单片机寄存器点灯知识点

stm32单片机寄存器点灯知识点光电开关是一种能够将光信号转换为电信号的装置。

通过检测光电开关的状态变化,我们可以实现对外部设备的控制。

STM32单片机作为一种常用的嵌入式处理器,其寄存器点灯是我们学习和掌握的基础知识点之一。

在使用STM32单片机进行寄存器点灯的过程中,需要了解以下几个关键概念。

1. 硬件寄存器:STM32单片机内部包含了各种硬件模块,如GPIO(通用输入/输出)、TIM(定时器)等,这些模块都与一些特定的硬件寄存器关联。

通过对这些寄存器的配置,我们可以实现对相应硬件模块的控制。

2. GPIO配置:GPIO是STM32单片机最常用的硬件模块之一,用于控制外部设备,如LED灯等。

在寄存器点灯的过程中,首先需要配置相应的GPIO引脚为输出模式。

通过设置GPIO的控制寄存器,可以配置引脚的工作模式、输出电平等参数。

3. 控制寄存器的设置:每个GPIO引脚都有对应的控制寄存器,在寄存器点灯中,我们需要设置控制寄存器来控制引脚的工作模式、输出电平等。

通过对控制寄存器进行位操作,可以实现对引脚的控制。

4. 轮询方式:在寄存器点灯的程序中,常用的方式是采用轮询的方式来检测输入状态并进行相应操作。

通过读取GPIO输入数据寄存器,可以获取当前引脚的状态,进而判断是否需要进行点亮或熄灭操作。

在进行STM32单片机寄存器点灯的代码编写时,可以按照以下步骤进行:1. 初始化GPIO引脚:通过设置GPIO的控制寄存器,将相应引脚配置为输出模式。

2. 进入循环:使用一个无限循环,使程序一直运行。

3. 轮询引脚状态:通过读取GPIO输入数据寄存器,获取当前引脚的状态。

4. 控制LED灯状态:根据引脚状态判断,可以通过设置GPIO的输出数据寄存器,控制LED灯的点亮或者熄灭。

5. 延时等待:为了能够看到LED灯的状态变化,可以通过添加适当的延时函数,使LED灯的状态变化可见。

通过以上步骤,我们可以实现STM32单片机寄存器点灯的功能。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

STM32单片机GPIO寄存器的功能解析
1、GPIO的寄存器按照功能可以分为以下几类:
A、配置寄存器
B、数据寄存器
C、位寄存器
D、锁定寄存器
2、对于GPIO端口,每个端口有16个引脚,每个引脚的模式由寄存器的四个位控制,每四位又分为两位控制引脚配置(CNFy[1:0]),两位控制引脚的模式及最高速度(MODEy [1:0]),其中y表示第y个引脚。

配置GPIO引脚模式的一共有两个寄存器,CRH是高寄存器,用来配置高8位引脚,还有CRL配置低八位引脚。

3、端口位设置\清除寄存器(GPIOx_BSRR)
一个引脚y的输出数据由GPIOx_BSRR寄存器位的2个位来控制分别为BRy (Bit Reset y)和BSy (Bit Set y),BRy位用于写1清零,使引脚输出低电平,BSy位用来写1置1,使引脚输出高电平。

而对这两个位进行写零都是无效的。

4、Cortex-M3有32根地址线,所以它的
寻址空间大小为2 bit=4GB。

ARM公司设计时,预先把这4GB的寻址空间大致地分配好了。

它把地址从0x4000 0000至0x5FFF FFFF(512MB )的地址分配给片上外设。

5、stm32f10x.h这个文件中重要的内容就是把STM32的所有寄存器进行地址映射。

如同51单片机的头文件一样,stm32f10x.h像一个大表格,我们在使用的时候就是通过宏定义进行类似查表的操作。

6、STM32总线有AHB总线、APB2总线、APB1总线
7、时钟系统。

A、从时钟频率来说分为告诉时钟和低速时钟,高速时钟是提供给芯片主体时钟,而低速时钟只是提供给芯片中的RTC及独立看门狗使用。

B、从芯片角度来说,时钟源分为内部时钟与外部时钟源,内部时钟是在芯片内部RC振。

相关文档
最新文档