STM32的IO口可以由软件配置成为8种模式:

1--输入浮空

2--输入上拉

3--输入下拉

4--模拟输入

5--开漏输出

6--推挽输出

7--推挽复用

8--开漏复用

STM32的每个IO口都有7个寄存器控制,他们分别是:

端口配置寄存器(32位,共两个,CRL和CRH)

数据寄存器(32位,共两个,IDR和ODR)

置位/复位寄存器(32位,一个,BSRR)

复位寄存器(16位,一个,BRR)

锁存寄存器(32位,一个,LCKR)

常用的IO寄存器只有四个,即CRL、CRH、IDR、ODR,他们分别是设置IO口工作状态和输入/输出数据的,其中CRL和CRH共2个32位寄存器控制16个IO口的状态(CRL和CRH完全一样,只是CRL控制的是低8位输出口GPIOx(0:7),CRH控制的是高八位GPIOx(8:15)),,寄存器情况如图所示:

上图为CRL寄存器,控制低8位状态,CRH类似。

常用的状态配置:

0X0 模拟输入模式(ADC用)

0X3 推挽输出模式 (作输出口用 50Mhz速率)

0X8 上/下拉输入模式 (作输入口用)

0XB 复用输出  (作IO口的第二功能 50Mhz速率)

例子

我们甚至PORTC的11位位上拉输入,12位为推挽输出,代码如下

     GPIO->CRH&=0XFFF00FFF;  //清除原来的设置,不影响其他位

     GPIO->CRH|=0X00038000;  //PC11输入,PC12输出

     GPIO->ODR=<<; //PC11上拉,IDR 输入数据寄存器,只使用了低16位,只读寄存器,同理,ODR也只使用了低16位,位可读写寄存器。

这样我们就完成了设置。

另外,IDR 输入数据寄存器,只使用了低16位,只读寄存器,同理,ODR也只使用了低16位,位可读写寄存器。

IDR寄存器描述如图:

RCC->APB2ENR|=1<<8; //使能 PORTG 口时钟

就是打开GPIO的时钟。stm32对每个外设的时钟都设置了开关,让用户可以精确地控制,关闭不需要的设备,达到节省供电的目的。如果不用的就完全关闭,尽可能降低芯片功耗。
说白了,时钟的功能就好像是一个小开关,你要用什么寄存器就先对应的打开开关,即:使能对应的时钟

17.3.15---关于GPIO学习笔记的更多相关文章

  1. 《C++ Primer Plus》15.1 友元 学习笔记

    15.1.1 友元类假定需要编写一个模拟电视机和遥控器的简单程序.决定定义一个Tv类和一个Remote类,来分别表示电视机和遥控器.遥控器和电视机之间既不是is-a关系也不是has-a关系.事实上,遥 ...

  2. 11月15日jquery学习笔记

    1.属性 jQuery对象是类数组,拥有length属性和介于0~length-1之间的数值属性,可以用toArray()方法将jQuery对象转化为真实数组. selector属性是创建jQuery ...

  3. 《C++ Primer Plus》15.4 RTTI 学习笔记

    运行时类型识别RTTI(Runtime Type Identification) C++有三个支持RTTI的元素.* 如果可能的话,dynamic_cast运算符将使用一个指向基类的指针来生成一个指向 ...

  4. cocos代码研究(17)Widget子类RadioButtonGroup学习笔记

    理论基础 RadioButtonGroup可以把指定的单选按钮组织起来, 形成一个组, 使它们彼此交互. 在一个RadioButtonGroup, 有且只有一个或者没有RadioButton可以处于被 ...

  5. SQL反模式学习笔记15 分组

    目标:查询得到每组的max(或者min等其他聚合函数)值,并且得到这个行的其他字段 反模式:引用非分组列 单值规则:跟在Select之后的选择列表中的每一列,对于每个分组来说都必须返回且仅返回一直值. ...

  6. SQL反模式学习笔记17 全文搜索

    目标:全文搜索 使用SQL搜索关键字,同时保证快速和精确,依旧是相当地困难. SQL的一个基本原理(以及SQL所继承的关系原理)就是一列中的单个数据是原子性的. 反模式:模式匹配 使用Like 或者正 ...

  7. Dynamic CRM 2013学习笔记(十)客户端几种查询数据方式比较

    我们经常要在客户端进行数据查询,下面分别比较常用的几种查询方式:XMLHttpRequest, SDK.JQuery, SDK.Rest. XMLHttpRequest是最基本的调用方式,JQuery ...

  8. SQL反模式学习笔记1 开篇

    什么是“反模式” 反模式是一种试图解决问题的方法,但通常会同时引发别的问题. 反模式分类 (1)逻辑数据库设计反模式 在开始编码之前,需要决定数据库中存储什么信息以及最佳的数据组织方式和内在关联方式. ...

  9. SQL反模式学习笔记5 外键约束【不用钥匙的入口】

    目标:简化数据库架构 一些开发人员不推荐使用引用完整性约束,可能不使用外键的原因有一下几点: 1.数据更新有可能和约束冲突: 2.当前的数据库设计如此灵活,以至于不支持引用完整性约束: 3.数据库为外 ...

随机推荐

  1. C语言预处理理论-宏定义1

    宏定义1宏定义的规则和使用解析(1)宏定义的解析规则就是:在预处理阶段由预处理器进行替换,这个替换是原封不动的替换.(2)宏定义替换会递归进行,直到替换出来的值本身不再是一个宏为止.#define M ...

  2. 19 01 18 dango 模型

    定义属性 Django根据属性的类型确定以下信息: 当前选择的数据库支持字段的类型 渲染管理表单时使用的默认html控件 在管理站点最低限度的验证 django会为表创建自动增长的主键列,每个模型只能 ...

  3. dns、网关、IP地址,主要是配置resolv.conf\network\ifcfg-eth0

    Ubuntu sudo vi /etc/network/interfac   添加 dns-nameservers 192.168.1.254dns-search stonebean.com cent ...

  4. JVM源码分析之自定义类加载器如何拉长YGC

    概述 本文重点讲述毕玄大师在其公众号上发的一个GC问题一个jstack/jmap等不能用的case,对于毕大师那篇文章,题目上没有提到GC的那个问题,不过进入到文章里可以看到,既然文章提到了jstac ...

  5. POJ 2771 最大点独立集

    这是经典的最大点独立集 还是可以转化成最大匹配数,为什么呢,因为求出最大匹配数之和,匹配的边的两个端点互斥,只能去一个,所以最后结果就用总点数-最大匹配数即可 #include <iostrea ...

  6. 一天一个设计模式——(Singleton)单例模式(线程安全性)

    一.模式说明 有时候,我们希望在应用程序中,仅生成某个类的一个实例,这时候需要用到单例模式. 二.模式类图 三.模式中的角色 Singleton角色,该模式中仅有的一个角色,该角色有一个返回唯一实例的 ...

  7. [转]Linux命令行上传文件到 百度网盘 bypy

    安装软件工具: apt-get install python-pip pip install requests pip install bypy 授权登陆: 执行 bypy info,显示下边信息,根 ...

  8. Codeforces 1296C - Yet Another Walking Robot

    题目大意: 给定一个机器人的行走方式 你需要取走一段区间 但要保证取走这段区间后机器人最终到达的终点位置是不变的 问这段区间最短时是哪一段 解题思路: 易得,如果重复走到了某些已经走过的点,那么肯定就 ...

  9. POJ 1466:Girls and Boys 二分图的最大点独立集

    Girls and Boys Time Limit: 5000MS   Memory Limit: 10000K Total Submissions: 11097   Accepted: 4960 D ...

  10. bitcoind

    Bitcoin Core Daemon version v0.15.1.0-g7b57bc998f Usage: bitcoind [options] Start Bitcoin Core Daemo ...