每个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,MO

crh寄存器_STM32的GPIO的寄存器介绍和设置相关推荐

  1. crh寄存器_STM32 学习笔记(寄存器)---2

    故事很多,我打算用一辈子来跟你讲,你准备好了吗?(狗头 没必要一次看完,多看几遍消化消化. 所有操作,最终目的都是操作寄存器 stm32编程实质上是修改寄存器的32位的具体的值 单片机 sfr P0= ...

  2. 嵌入式学习笔记——使用寄存器编程操作GPIO

    使用寄存器编程操作GPIO 前言 GPIO相关的寄存器 GPIO 端口模式寄存器 (GPIOx_MODER) (x = A..I) 位操作 GPIO 端口输出类型寄存器 (GPIOx_OTYPER) ...

  3. A40i使用笔记:GPIO操作方式(用于测试设备io驱动性能)(传统方式、设备树方式、寄存器方式操作GPIO)

    一.前言 前文介绍了文件io的驱动方式,可以用于led点灯灭灯或者一些简单的不需求时序控制的ic操作,但是用于功能类ic,如AD采集芯片等时序控制需求高的,就不行了,这时候就需求高速io去实现指定的芯 ...

  4. stm32延时us寄存器_STM32延时函数的四种方法

    关注.星标公众号,不错过精彩内容 单片机编程过程中经常用到延时函数,最常用的莫过于微秒级延时delay_us()和毫秒级delay_ms().本文基于STM32F207介绍4种不同方式实现的延时函数. ...

  5. 【10天基于STM32F401RET6智能锁项目实战第2天】GPIO与寄存器

    GPIO与寄存器 一.GPIO的作用.数量与命名 二.GPIO口的四大模式 三.寄存器 一.GPIO的作用.数量与命名 二.GPIO口的四大模式 三.寄存器 更多的寄存器的实际操作会在后面的代码中讲解 ...

  6. STM32F1XX的GPIO的8种工作模式以及GPIO的寄存器简介

    基础知识 STM32F103ZET6一共有7组IO口,即GPIOA,GPIOB,GPIOC到GPIOG.每组IO口有16个IO,所以一共有112个IO.STM32的大部分引脚除了当GPIO使用外,还可 ...

  7. GPIO的寄存器BSRR和BRR使用摘抄汇总

    GPIO的寄存器BSRR和BRR 以写数据为例,提供的函数有  GPIO_SetBits   GPIO_ResetBits  GPIO_WriteBit   GPIO_Write  比如我在PD口的高 ...

  8. 什么是GPIO?(详细介绍)

    以STM32F4系列的单片机做例子 一.引入 单片机最小系统的组成:                   芯片 + 供电电路 + 复位电路 + 时钟(晶振)电路              一个完成的系 ...

  9. 计算机存储器与寄存器的区别,存储器和寄存器区别

    大家好,我是时间财富网智能客服时间君,上述问题将由我为大家进行解答. 存储器和寄存器的区别是: 1.存储器功能:存放指令和数据,并能由中央处理器(CPU)直接随机存取. 2.寄存器功能:可将寄存器内的 ...

最新文章

  1. matlab 计算大型距离方阵,distance matrix
  2. 线性回归损失函数为什么要用平方形式
  3. C#中的where泛型约束中的new()使用(转)
  4. 运放电路分析_运放参数的详细解释和分析part4运放噪声
  5. 小姐姐为你解析马爸爸是怎么用大数据“宰你”的
  6. 微信小程序---实现输入手机验证码功能
  7. Linux学习笔记---移植官方uboot步骤(一)
  8. 赛锐信息:集团化公司SAP权限管控解决方案
  9. 8.总线设备驱动模型
  10. 电工电子技术知识点总结(基本放大电路)
  11. 计算机包含几个语素几个词,英语一词有几个语素
  12. 突破现实的墙 | 众猎创始人Tony Guo和他的猎界风云
  13. 影刀RPA金礼剑:专注打造简单易用的RPA产品,构建差异化市场竞争力 | 数据猿专访...
  14. mini2440硬件篇之Nand Flash
  15. Robolectric单元测试 - Android Could not determine artifacts for XXXX: Skipped due to earlier error
  16. bzoj2215[POI2011]Conspiracy
  17. 赛扬n5095和r55500u哪个好
  18. Ubuntu16.04 打不开文件夹解决办法 | killall nautilus的原理 |nautilus命令快速打开文件
  19. java做一个mud_菜鸟学Java(十二)——搭建一个完整的Java开发环境
  20. sdcc编译器使用makefile

热门文章

  1. windows重建linux引导,Linux引导修复 利用Linux重建Windows引导
  2. 基于STM32和EV1527的无线接收解码程序
  3. 小孔成像总结_初中物理解题技巧+方法总结,非常实用,初二初三都要看!
  4. php下拉框css样式,纯CSS实现的下拉菜单
  5. Linux 中 find 命令如何使用,附 35 个实际例子
  6. HikariCP数据库连接池,太快了!
  7. log4j2内容详解
  8. torch.cat()的类型转换
  9. blob导出的excel文件打不开,responseType: “blob“ 但 response回应类型不是blob类型,response.data是乱码。
  10. 网易互娱AI Lab视频动捕技术iCap被CVPR 2022接收!