STM32 GPIO 寄存器配置
一.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 寄存器配置相关推荐
- STM32 GPIO的配置寄存器(CRL、CRH)输入输出模式配置
STM32 GPIO的配置寄存器(CRL.CRH)输入输出模式配置 1.学会使用寄存器设定所需IO的方向,学会配置CRL.CRH 2.理解如下代码的含义 //IO方向设置 #define DS18B2 ...
- 【驱动】GPIO寄存器配置总结
#[驱动]GPIO寄存器配置总结 0.设置复用功能为GPIO 1.设置引脚特性,与硬件匹配 2.配置寄存器举例 字段解释: 2.0.SRE 数据位:0 SRE(Slew Rate Field):转换速 ...
- STM32 GPIO的配置寄存器(CRL、CRH)快速学习
1.问题 在使用STM32的时候配置GPIO是最常见的操作,可以使用比较简单明白的库函数配置,但很繁杂.使用寄存器的方式可以快速配置,对于同一个IO口的输入输出都需要使用到的时候,比如IIC通讯的SD ...
- 【i.MX6ULL】驱动开发3——GPIO寄存器配置原理
前面的两篇Linux驱动文章,介绍了字符设备驱动的两种新旧开发方式,并使用一个虚拟的字符驱动来学习字符设备的开发的流程. 本篇起,就要来操作Linux开发板的硬件,首先当然是通过经典的点亮LED灯程序 ...
- STM32——GPIO(1)
STM32--GPIO 宗旨:技术的学习是有限的,分享的精神是无限的. [对单片机的操作就是控制IO口] 一.GPIO(通用输入输出口) 1.选定需要的引脚(对应哪一个IO口): 2.配置需要的功能( ...
- 【浅析STM32之GPIO寄存器(CRL/CRH)配置 】
浅析STM32之GPIO寄存器(CRL/CRH)配置 一.前言 GPIO的配置可以说是STM单片机的一大特色,通过GPIO的配置我们可以进行多种不同模式的输入和输出,并且进行配置的方式也有多种,一般我 ...
- STM32 GPIO的原理、特性、选型和配置
目录 1.基本结构 2.4种输入模式 3.4种输出模式 4.GPIO选型和配置 1.基本结构 STM32 GPIO是通用输入/输出端口的英文简称,其可实现输入.输出.驱动.通信等功能,STM32的I/ ...
- STM32低功耗模式下GPIO如何配置最节能?
目录 1.将未使用的GPIO 配置为模拟输入模式 2.调节GPIO 速度 3.GPIO不使用时禁用寄存器时钟 4.避免悬空未使用的引脚 STM32低功耗模式下GPIO如何配置最节能,这里总结了一下四点 ...
- stm32 GPIO简单介绍及初始化配置(库函数)
前言: 相信,大部分查找GPIO的人,都是刚刚接触STM32的人,而刚接触STM32的人,大部分是从51上来的人,所以我会由浅入深,从51和STM32的区别入手,通过对比这两个处理器的配置方法,来跟大 ...
最新文章
- LocalDateTime、LocalDate、Date的相互转换(亲测LocalDateTime转LocalDate)
- NgRx Store createSelector 的单步调试和源代码分析
- 虚拟机安装Linux(vmware + ubuntu)
- 微信支付封杀虚拟货币交易,亦是重拳无情!
- 北京大学生物信息学 (4)序列数据库
- 移远ec20模式与切换
- javassist官方文档翻译
- 【西藏攻略+游记】十一,我们去西藏(1)攻略
- Java 如何保证线程安全,你真的清楚吗
- 图像加密--chua's chaos and baker's transformation
- 为什么要求高频pcb板低ε(Dk)
- APP开发接入广告平台及应用市场(应用分发平台)记录
- C#/.NET 通过代码打开浏览器
- 【ESP32_8266_WiFi (十四)】ESP8266多任务处理 – Ticker库使用说明
- 重装Ubuntu(Linux)后快速搭建工作环境(深度学习环境)
- 防抖为什么要使用闭包
- RTSP 协议详细介绍
- Oracle服务与配置
- java源码解析之反射(二)
- 【机器人仿真Webots教程】-控制器编程指南
热门文章
- 创建第一个nodejs项目
- 使用PackageInstaller安装app流程学习小结
- spingboot2.0以上利用YUI Compressor Maven结合压缩混淆JS/CSS
- html5取消纵横比,CSS技巧:网格项目的纵横比
- python waitpid_waitpid使用的一点问题
- 数字城市智能巡查系统软件测试
- Instrumentation的含义和ActivityThread的关系
- 1966: [Ahoi2005]VIRUS 病毒检测
- 电脑软件 个人觉得值得收藏
- 数据分析技能点-MySQL表记录的检索