STM32学习笔记(三)------GPIO口寄存器的操作与使用

发布者:温馨如家最新更新时间:2020-12-22 来源: eefocus关键字:STM32 手机看文章 扫描二维码
随时随地手机看文章

1、STM32 的每个 IO 端口都有 7 个寄存器来控制

(1)配置模式的 2 个 32 位的端口 配置寄存器 CRL 和 CRH

(2)2 个 32 位的数据寄存器 IDR 和 ODR

(3)1 个 32 位的置位/复位寄存器 BSRR

(4)一个 16 位的复位寄存器 BRR

(5)1 个 32 位的锁存寄存器 LCKR。


2、每个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。


3、另外,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送数据就行了


首先介绍一下基本的GPIO相关的寄存器:

(一)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]的管脚速度速度等级,之后再配置管脚的连接模式。上拉,下拉,推免,开漏等等。具体运用的时候看看手册就明白了。


(二)GPIOX_CRH 高8位端口配置寄存器

和GPIOX_CRH 完全一样,只是端口换成高8位了。


(三)GPIOX_ODR 端口输出数据寄存器

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

或者用GPIOA->ODR |=(1<


关键字:STM32 引用地址:STM32学习笔记(三)------GPIO口寄存器的操作与使用

上一篇:STM32自学笔记GPIO寄存器
下一篇:STM32L1xx的库函数有个Bug(stm32l1xx_gpio.c)

推荐阅读最新更新时间:2024-10-25 13:21

STM32学习笔记(三)------GPIO寄存器操作使用
1、STM32 的每个 IO 端口都有 7 个寄存器来控制 (1)配置模式的 2 个 32 位的端口 配置寄存器 CRL 和 CRH (2)2 个 32 位的数据寄存器 IDR 和 ODR (3)1 个 32 位的置位/复位寄存器 BSRR (4)一个 16 位的复位寄存器 BRR (5)1 个 32 位的锁存寄存器 LCKR。 2、每个GPIO端口有两个32位配置寄存器(GPIOx_CRL,GPIOx_CRH)分别控制每个端口的高八位和低八位,如果IO口是0-7号的话,则写CRL寄存器,如果IO口是8-15号的话,则写CRH寄存器,两个32位数据寄存器(GPIOx_IDR,GPIOx_ODR)一个是只读作输入数据寄存器,一个
[单片机]
STM32使用BSRR和BRR寄存器快速操作GPIO端口
STM32的每个GPIO端口都有两个特别的寄存器,GPIOx_BSRR和GPIOx_BRR寄存器,通过这两个寄存器可以直接对对应的GPIOx端口置'1'或置'0'。 GPIOx_BSRR的高16位中每一位对应端口x的每个位,对高16位中的某位置'1'则端口x的对应位被清'0';寄存器中的位置'0',则对它对应的位不起作用。 GPIOx_BSRR的低16位中每一位也对应端口x的每个位,对低16位中的某位置'1'则它对应的端口位被置'1';寄存器中的位置'0',则对它对应的端口不起作用。
[单片机]
STM32 (3) GPIO口功能讲解 GPIO 输入输出 寄存器配置
讲解GPIO操作原理,使用各种型号的STM32 打开官方的《STM32中文参考手册》8.1 8.2小节 GPIO功能描述 我们今天重点要分析的是下图 上图是100脚的STM32单片机 1. GPIO是包含引脚的 2. 如何找GPIO功能: 看数据手册 在第3章 我们要看GPIO口的功能就看这里 在这个表里面我们就能够查找到每一个GPIO口的功能 接下来我们要重点 这里分成7个部分 1.引脚进来有两个保护二极管 作用:IO口电流输入高于3.3v时,上流 (保护芯片)但是 如果输入电压大于VDD很多的话 单片机还是会烧坏 举个例子: IO口直接接电机的时候 电机启动的时候会有反相电动势 会有过冲
[单片机]
<font color='red'>STM32</font> (3) <font color='red'>GPIO</font>口功能讲解 <font color='red'>GPIO</font> <font color='red'>口</font>输入输出 <font color='red'>寄存器</font>配置
STM32入门学习之GPIO(STM32F030F4P6基于CooCox IDE)(寄存器操作
依然,直接上代码 #include stm32f0xx.h #include stm32_lib/inc/stm32f0xx_rcc.h #include stm32_lib/inc/stm32f0xx_gpio.h int main(void) { //IOPAEN=1,使能GPIOA的时钟 RCC- AHBENR |= RCC_AHBENR_GPIOAEN; //设置IO口工作模式,GPIOA_MODER4=0x01,通用IO口 GPIOA- MODER |= GPIO_MODER_MODER4_0; GPIOA- MODER &= ~GPIO_MODER_MODER4_1; /
[单片机]
<font color='red'>STM32</font>入门学习之<font color='red'>GPIO</font>(STM32F030F4P6基于CooCox IDE)(<font color='red'>寄存器</font><font color='red'>操作</font>版
STM32GPIO的相关配置寄存器、库函数、位操作
STM32F1xx官方资料: 《STM32中文参考手册V10》-第8章通用和复用功能IO(GPIO和AFIO) 《Cortex-M3权威指南(中文)》第5章 位带操作 硬件连接 假设跑马灯实验的硬件连接如上图所示,LED0连接PB5,LED1连接PE5。由于在LED的另一端是VCC3.3,所以当PB5或PE5为低电平的时候,LED灯会亮。此时GPIO应采取推挽输出的模式。 GPIO的相关配置寄存器 STM32的每组GPIO口包括7个寄存器。也就是说,每个寄存器可以控制一组GPIO的16个GPIO口。这7个寄存器分别为: GPIOx_CRL:端口配置低寄存器(32位) GPIOx_CRH:端口配置高寄存器(32
[单片机]
【<font color='red'>STM32</font>】<font color='red'>GPIO</font>的相关配置<font color='red'>寄存器</font>、库函数、位<font color='red'>操作</font>
STM32寄存器操作方式学习-GPIO
1、当端口想要配置为外部中断线时,端口必须配置成输入模式。 2、 对于双向复用功能,端口位必须配置复用功能输出模式(推挽或开漏)。这时,输入驱动器被配置成浮空输入模式。 3、当端口配置为输出模式时,引脚默认为低电平。 4、使用GPIO的默认复用功能只需将相应的端口位配置寄存器(GPIOx_CRL或者GPIOx_CRH)设置成相应的值即可,不需要打开辅助功能IO时钟,只有在用到重映射时才需要打 开辅助功能IO时钟。
[单片机]
如何将STM32单片机的JTAG作为GPIO使用
使用STM32F系列,会遇到将JTAG口复用为SPI1或直接用做普通IO。 针对于F1系列,需要先禁止使能 JTAG,然后将其复用为其他口或者普通IO。 针对F4系列,STM32F4库函数中,已经取消了GPIO_*PinRemapConfig()函数,对于复用功能使用GPIO*_PinAFConfig()函数了! 但是在GPIO_PinAFConfig()函数已经没有禁止JTAG/SW等选项了,而是复用到AF0~AF15线上,其中AF0是系统功能(也是复位初始功能)。 其中调试接口就是系统功能,这样需要禁用JTAG功能只需把引脚复用到AF1~AF15中的一个就行了。 直接复用就可使用相应的复用功能,不用想着失能
[单片机]
STM32GPIO操作配置和使用方法
一、前言 本篇开始对STM32的GPIO在实际开发设计中的使用配置和技巧进行探讨,可以先去回顾下之前介绍的GPIO的相关理论基础知识包括基本结构,工作模式和寄存器原理。 了解过STM32的GPIO相关的理论知识,这样在应用GPIO开发过程中,能更好的理解GPIO的特点,应用起来会更加的得心应手。 后续将从以下图1中所示的几个方面对GPIO应用设计中的步骤展开介绍。本篇先介绍GPIO的基本API函数定义,配置初始化的流程,以及使用技巧;针对将GPIO的引脚用于外部中断的功能将作为单独的一篇进行详细的讨论介绍。 图1 GPIO应用设计 二、API函数 STM32有多种类型的库,本节所介绍的STM32的GPIO函
[单片机]
<font color='red'>STM32</font>的<font color='red'>GPIO</font><font color='red'>操作</font>配置和<font color='red'>使用</font>方法
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved