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. 如何在Ubuntu 18.04上安装和卸载TeamViewer

    卸载命令:sudo apt --purge remove teamviewer 安装:https://www.linuxidc.com/Linux/2018-05/152282.htm 如何在Ubun ...

  2. Day1-T1

    原题目 Describe:普通前缀和(当然有升级版的题目,范围3000+) code: #include<bits/stdc++.h> #define maxn 1010 #define ...

  3. mysql数据库索引优化

    参考 :http://www.cnblogs.com/yangmei123/archive/2016/04/10/5375723.html MySQL数据库的优化:    数据库优化的目的:     ...

  4. OC项目加入swift第三方库遇到的坑

    https://www.jianshu.com/p/96d868dcd69c 2017.07.07 16:23* 字数 295 阅读 5218评论 2喜欢 4 首先,在OC项目的Podfile文件中添 ...

  5. python----linux下简单的排序

    1.选择排序:把一个数与余下所有的数排序,最小的排到最前面 [root@besttest liyn_test]# cat test.py #! /usr/bin/python a=[,,,] ,len ...

  6. Sequence Models Week 3 Trigger word detection

    Trigger Word Detection Welcome to the final programming assignment of this specialization! In this w ...

  7. Java集合--Map

    Map接口(双例集合): Map提供了映射关系,存放的元素是以key-value键值对存放的.可以根据key快速的查询value.key不可以重复,value可以重复. 常用实现类:HashMap,H ...

  8. openstack trove主要贡献公司-Tesora被Stratoscale收购

    新闻链接:http://www.stratoscale.com/press/press-releases/stratoscale-acquires-database-as-a-service-prov ...

  9. NRF24L01中断双向传输数据

    NRF24L01是一款比较常见的无线通讯芯片,不过有个缺点就是只能半双工通讯,当涉及到双向通讯时就比较麻烦一些·,特别是想要做无线IAP数据需要一直来回发送,这点无疑然人恶心到想吐,不过还好有数据中断 ...

  10. CTF -bugku-web-web基础 矛盾

    ---恢复内容开始--- 以GET方式获取参数 is_numeric()函数是判断是否为数字或者数字字符串 所以不能是数字或者数字字符串,但是下面$num == 1 有要求为数字1 所以构造1+任意字 ...