STM32的每个I/O口都由7个寄存器控制:2个32位端口配置寄存器CRL和CRH;2个32位的数据寄存器IDR和ODR;1个32位的置位复位寄存器BSRR;1个16位的复位寄存器BRR;1个32位的锁存寄存器LCKR;

而我们最常用的有4个:CRL/CRH/IDR/ODR;所以一般情况下我们只要配置这四个is OK。而CRH和CRL作用是完全一样的,CRH用于控制GPIOX(X表示A---G)的高8位(Pin15---Pin8),而CRL用于控制GPIOX(X表示A---G)的低8位(Pin7----Pin0)。每个模式的pin脚设置需要4bit来完成,即MODE[1:0]负责设置模式位,CNF[1:0]负责设置配置位。

首先,用到哪个IO使能哪组IO时钟,使能GPIO对应的时钟,RCC->APB2ENR|=1<<2;  // 使能PORTA时钟(后续会提到),其次是配置其工作模式, GPIO的八种工作模式:

1、浮空输入GPIO_IN_FLOATING ——浮空输入,可以做KEY识别,RX1

2、带上拉输入GPIO_IPU——IO内部上拉电阻输入

3、带下拉输入GPIO_IPD——IO内部下拉电阻输入

4、模拟输入GPIO_AIN ——应用ADC模拟输入,或者低功耗下省电

5、开漏输出GPIO_OUT_OD ——IO输出0接GND,IO输出1,悬空,需要外接上拉电阻,才能实现输出高电平。当输出为1时,IO口的状态由上拉电阻拉高电平,但由于是开漏输出模式,这样IO口也就可以由外部电路改变为低电平或不变。可以读IO输入电平变化,实现C51的IO双向功能

6、推挽输出GPIO_OUT_PP ——IO输出0-接GND, IO输出1 -接VCC,读输入值是未知的

7、复用功能的推挽输出GPIO_AF_PP ——片内外设功能(I2C的SCL,SDA)

8、复用功能的开漏输出GPIO_AF_OD——片内外设功能(TX1,MOSI,MISO.SCK.SS)

see a example:GPIOC->CRL&=0XFFFF0FFF;             //清除PC3该位原来的设置

GPIOC->CRL|=0X00008000;                //设置下拉输入

GPIOC->ODR==0<<3;                          //ODR暂存将从端口发送的数据为0,即输出低

GPIOC->IDR==0<<3;                           //外部输入为0

CRH、CRL、ODR和IDR的使用相关推荐

  1. crh寄存器_关于CRH、CRL、ODR和IDR寄存器的使用总结

    关于 CRH . CRL . ODR 和 IDR 寄存器的使用总结 一. CRH 和 CRL 的使用: CRH 和 CRL 的使用基本相同, CRH 用于控制 GPIOX ( X 表示 A---G ) ...

  2. STM32的CRH、CRL、ODR和IDR寄存器的使用总结

    STM32的CRH.CRL.ODR和IDR寄存器的使用总结 一.下载: STM32F103中文参考手册 百度网盘:链接:百度网盘 请输入提取码 密码:lwcg 二.CRH和CRL的介绍: CRH和CR ...

  3. 关于CRH、CRL、ODR和IDR寄存器的使用总结

    关于CRH.CRL.ODR和IDR寄存器的使用总结 一.CRH和CRL的使用: CRH和CRL的使用基本相同,CRH用于控制GPIOX(X表示A---G)的高8位(Pin15---Pin8),而CRL ...

  4. crh寄存器_STM32的CRH、CRL、ODR和IDR寄存器的使用总结

    一.下载: STM32F103中文参考手册 二.CRH和CRL的介绍: CRH和CRL的使用基本相同,CRH用于控制GPIOX(X表示A---G)的高8位(Pin15---Pin8),而CRL用于控制 ...

  5. STM32F10x系列GPIO寄存器BRR、BSRR、ODR、IDR的使用理解

    引脚的高.低电平控制,有3种方法(3个寄存器) 分别是通过GPIO的 3个 管脚控制寄存器: ODR寄存器,   控制管脚的高.低电平,低16位有效,写1 高电平, 写0 低电平; BSRR寄存器, ...

  6. STM32GPIO寄存器CRL、CRH、IDR、ODR、BSRR、BRR

    GPIO 寄存器描述 注意:本文以STM32F10XXX为参考,重在理解 CRL与CRH CRL与CRH分别为端口配置低与端口配置高寄存器,为32位寄存器,其中每四位控制一个I/O口 对CNFy与MO ...

  7. STM32单片机的GPIO寄存器CRL、CRH、IDR、ODR、BRSS、BRR

    STM32的寄存器多如牛毛,要一个一个的弄清楚谈何容易呀,所以我们在学习的时候要抓住重点,挑重要的进行学习和记忆,因为STM32一个一个去配置寄存器的话相当的麻烦,我们实际开发的话也不会一个一个去配置 ...

  8. 了解库开发,我们从STM32标准库开发学起

    摘要:从STM32新建工程.编译下载程序出发,让新手由浅入深,尽享STM32标准库开发的乐趣. 自从CubeMX等图像配置软件的出现,同学们往往点几下鼠标就解决了单片机的配置问题.对于追求开发速度的业 ...

  9. STM32F103mini教程学习总结与心得(一)

    关注同名微信公众号"混沌无形",有趣好文! 1.引脚是否兼容5V的判断:引脚表中PF表示5V,原理图中有ADC的引脚为3.3V 2.PT:容忍5V,没有PT标示,就不能 3. 每组 ...

最新文章

  1. chrome session丢失_一文带你彻底读懂Cookie、Session、Token到底是什么
  2. Git submodule 的笔记
  3. 完整学习git五git重置
  4. 转载Silverlight AutoCompleteBox 增强key/value 拼音头检索
  5. java中scort意思_java入门—笔记
  6. Silverlight 3一瞥
  7. Reference to a cleared variable I1
  8. java枚举返回字符串_枚举工具类-通过给定值获取对应的枚举类
  9. SolidWorks模型分享:皮带轮 免费模型下载
  10. 电源管理允许此设备唤醒计算机怎么关掉,电脑如何设置电源管理允许鼠标唤醒计算机...
  11. Lucene Automaton(二)
  12. Ubuntu14.04安装LSD-SLAM
  13. 猫咖小程序开发有何优势?具备什么功能版块?
  14. 写个脚本薅区块鱼羊毛
  15. iic片选PCA9548A芯片
  16. VisionMobile:M2M生态系统的秘方(5):四、创建M2M平台
  17. 2021年G1工业锅炉司炉考试及G1工业锅炉司炉证考试
  18. 联通用户的福利,不了解就拉倒!
  19. 哈理工OJ-1584-青蛙过河【贪心+二分】
  20. 百度孙宇:百度语义理解技术ERNIE及其应用

热门文章

  1. 全国邮编区号大全和从word中读取内容保存到msql中的源程序
  2. 读取服务器光模块信息,如何使用MIB读取光模块的收发光功率
  3. JavaScript入门小试,水仙花数的辨别以及再深入学习一些定义区间。
  4. java:从左至右显示“12345678”,接着显示“23456781”,在接着显示“34567812”,一直到“81234567”, 然后返回“12345678”
  5. 强叔侃墙 NAT篇 NAT Server 三十二字真言(上篇)_实验一正一反,出入自如去反存正,自断出路
  6. iOS 优化 - 瘦身
  7. 口语化/面试讲解TCP为什么要握手,为什么是三次握手而不是两次或四次
  8. 如何充分利用开源项目_充分利用最好的5个开源转移学习项目来增强您的项目...
  9. python-docx 不改变原文件调整段落行间距的问题
  10. [MySQL] 统计图数据查询 (MySQL查询时间范围内所有日期)