一.CRH和CRL的使用:fficeffice" />

CRH和CRL的使用基本相同,CRH用于控制GPIOX(X表示A---G)的高8位(Pin15---Pin8),而CRL用于控制GPIOX(X表示A---G)的低8位(Pin7----Pin0)。

二.ODR的使用:

1.

RCC->APB2ENR|=1<<2;    //使能PORTA时钟

GPIOA->CRH&=0XFFFFFFF0;//清除该位原来的设置

GPIOA->CRH|=0X00000003;//PA8 推挽输出

GPIOA->ODR|=1<<8;      //PA8 输出高

由以上代码看出,PA8设置成了推挽输出。大家都知道一个端口可以输出高电平,也可以输出低电平,而GPIOA->ODR|=1<<8;这个表达式就把PA8设置成了在空闲的时候输出高电平;GPIOA->ODR|=0<<8;这个表达式,把PA8设置成了在空闲的时候输出低电平。

如果想设置PA8为推挽输出,并且希望输出为低电平,可以不要这个表达式GPIOA->ODR|=0<<8;  ,因为系统会默认端口输出为低电平 。

2.          
                  RCC->APB2ENR|=1<<2;    //使能PORTA时钟

GPIOA->CRH&=0XFF0FFFFF;

GPIOA->CRH|=0X00800000; //PA13设置成上拉/下拉输入                      
                 GPIOA->ODR|=1<<13;        //PA13上拉

由以上代码看出,PA13设置成了上拉输入,即输入高电平。大家都知道,一个端口设置成了输入模式,那么它可以输入高电平,也可以输入低电平。GPIOA->ODR|=1<<13;      这个表达式把PA13设置成了上拉模式,即表示在端口空闲的时候输入高电平;GPIOA->ODR|=0<<13;这个表达式把PA13设置成了下拉模式,即端口在空闲的时候输入低电平。

如果想设置PA13为输入模式,并且希望输入低电平,可以不要这个表达式GPIOA->ODR|=0<<13;   ,因为系统会默认端口输入为低电平。

三.IDR的使用:

IDR是一个端口输入数据寄存器,只用了低16位。该寄存器为只读寄存器,并且只能以16位的形式读出。读出的值为对应IO口的状态。

===========================================================华丽分割线==============================================================

端口低配置寄存器寄存器的复位值为0X4444 4444,,复位值其实就是配置端口为浮空输入模式。STM32的CRL控制着每个IO端口(A~G)的低8位的模式。每个IO端口的位占用CRL的4个位,高两位为CNF,低两位为MODE。这里我们可以记住几个常用的配置,比如0X4表示模拟输入模式(ADC用)、0X3表示推挽输出模式(做输出口用,50M速率)、0X8表示上/下拉输入模式(做输入口用)、0XB表示复用输出(使用IO口的第二功能,50M速率)。CRH的作用和CRL完全一样,只是CRL控制的是低8位输出口,而CRH控制的是高8位输出口。这里我们对CRH就不做详细介绍了。给个实例,比如我们要设置PORTC的11位为上拉输入,12位为推挽输出。代码如下:GPIOA->CRH&=0XFFFFFFF0; GPIOA->CRH|=0X00000003;//PA8 推挽输出    GPIOA->ODR|=1<<8;     //PA8 输出高再如:GPIOC->CRH&=0XFFF00FFF;//清掉这2个位原来的设置,同时也不影响其他位的设置GPIOC->CRH|=0X00038000; //PC11输入,PC12输出GPIOC->ODR=1<<11;//PC11上拉通过这3句话的配置,我们就设置了PC11为上拉输入,PC12为推挽输出

STM32 GPIO 寄存器配置相关推荐

  1. STM32 GPIO的配置寄存器(CRL、CRH)输入输出模式配置

    STM32 GPIO的配置寄存器(CRL.CRH)输入输出模式配置 1.学会使用寄存器设定所需IO的方向,学会配置CRL.CRH 2.理解如下代码的含义 //IO方向设置 #define DS18B2 ...

  2. 【驱动】GPIO寄存器配置总结

    #[驱动]GPIO寄存器配置总结 0.设置复用功能为GPIO 1.设置引脚特性,与硬件匹配 2.配置寄存器举例 字段解释: 2.0.SRE 数据位:0 SRE(Slew Rate Field):转换速 ...

  3. STM32 GPIO的配置寄存器(CRL、CRH)快速学习

    1.问题 在使用STM32的时候配置GPIO是最常见的操作,可以使用比较简单明白的库函数配置,但很繁杂.使用寄存器的方式可以快速配置,对于同一个IO口的输入输出都需要使用到的时候,比如IIC通讯的SD ...

  4. 【i.MX6ULL】驱动开发3——GPIO寄存器配置原理

    前面的两篇Linux驱动文章,介绍了字符设备驱动的两种新旧开发方式,并使用一个虚拟的字符驱动来学习字符设备的开发的流程. 本篇起,就要来操作Linux开发板的硬件,首先当然是通过经典的点亮LED灯程序 ...

  5. STM32——GPIO(1)

    STM32--GPIO 宗旨:技术的学习是有限的,分享的精神是无限的. [对单片机的操作就是控制IO口] 一.GPIO(通用输入输出口) 1.选定需要的引脚(对应哪一个IO口): 2.配置需要的功能( ...

  6. 【浅析STM32之GPIO寄存器(CRL/CRH)配置 】

    浅析STM32之GPIO寄存器(CRL/CRH)配置 一.前言 GPIO的配置可以说是STM单片机的一大特色,通过GPIO的配置我们可以进行多种不同模式的输入和输出,并且进行配置的方式也有多种,一般我 ...

  7. STM32 GPIO的原理、特性、选型和配置

    目录 1.基本结构 2.4种输入模式 3.4种输出模式 4.GPIO选型和配置 1.基本结构 STM32 GPIO是通用输入/输出端口的英文简称,其可实现输入.输出.驱动.通信等功能,STM32的I/ ...

  8. STM32低功耗模式下GPIO如何配置最节能?

    目录 1.将未使用的GPIO 配置为模拟输入模式 2.调节GPIO 速度 3.GPIO不使用时禁用寄存器时钟 4.避免悬空未使用的引脚 STM32低功耗模式下GPIO如何配置最节能,这里总结了一下四点 ...

  9. stm32 GPIO简单介绍及初始化配置(库函数)

    前言: 相信,大部分查找GPIO的人,都是刚刚接触STM32的人,而刚接触STM32的人,大部分是从51上来的人,所以我会由浅入深,从51和STM32的区别入手,通过对比这两个处理器的配置方法,来跟大 ...

最新文章

  1. LocalDateTime、LocalDate、Date的相互转换(亲测LocalDateTime转LocalDate)
  2. NgRx Store createSelector 的单步调试和源代码分析
  3. 虚拟机安装Linux(vmware + ubuntu)
  4. 微信支付封杀虚拟货币交易,亦是重拳无情!
  5. 北京大学生物信息学 (4)序列数据库
  6. 移远ec20模式与切换
  7. javassist官方文档翻译
  8. 【西藏攻略+游记】十一,我们去西藏(1)攻略
  9. Java 如何保证线程安全,你真的清楚吗
  10. 图像加密--chua's chaos and baker's transformation
  11. 为什么要求高频pcb板低ε(Dk)
  12. APP开发接入广告平台及应用市场(应用分发平台)记录
  13. C#/.NET 通过代码打开浏览器
  14. 【ESP32_8266_WiFi (十四)】ESP8266多任务处理 – Ticker库使用说明
  15. 重装Ubuntu(Linux)后快速搭建工作环境(深度学习环境)
  16. 防抖为什么要使用闭包
  17. RTSP 协议详细介绍
  18. Oracle服务与配置
  19. java源码解析之反射(二)
  20. 【机器人仿真Webots教程】-控制器编程指南

热门文章

  1. 创建第一个nodejs项目
  2. 使用PackageInstaller安装app流程学习小结
  3. spingboot2.0以上利用YUI Compressor Maven结合压缩混淆JS/CSS
  4. html5取消纵横比,CSS技巧:网格项目的纵横比
  5. python waitpid_waitpid使用的一点问题
  6. 数字城市智能巡查系统软件测试
  7. Instrumentation的含义和ActivityThread的关系
  8. 1966: [Ahoi2005]VIRUS 病毒检测
  9. 电脑软件 个人觉得值得收藏
  10. 数据分析技能点-MySQL表记录的检索