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. 使用GDI+显示OpenCV中的图像IplImage

    OpenCV虽然自带了轻量级的界面库HighGUI,但是支持的图像化元素实在是太少了,一般只在前期算法测试时使用.实际产品还是使用MFC库.因此本文记录了如何在GDI+中显示OpenCV中的IplIm ...

  2. ROS常见问题(一) 安装ROS时sudo rosdep init指令报错 最全解决方法

    安装ROS时sudo rosdep init指令报错: ERROR: cannot download default sources list from: https://raw.githubuser ...

  3. 2.9 初识 jetpack

    Android Jetpack 组件 Android Jetpack 组件是库的集合 这些库是为协同工作而构建的,也可以单独采用,同时利用 Kotlin 语言功能帮助提高工作效率.可全部使用,也可混合 ...

  4. react入门(1)之阮一峰react教程

    阮一峰老师的github地址:React Demos React 入门实例教程 2.ReactDOM.render() // ReactDOM.render() 将模板转化为 HTML 语言 // 参 ...

  5. DevOps元数据管理

    元数据是自动化运维的基础,对元数据的管理和查询贯穿整个运维的生命周期.我们从一个元数据的使用场景开始: 双十一抢购火热进行中,某电商后端实例的日志中出现了502错误码,运维平台监测到该异常并发送告警给 ...

  6. centos系统 通过命名查找需要安装哪个安装包 command not found

    场景: 服务器未安装命令,但是我们需要使用,不知道该安装什么包,以sz命令为例 [root@localhost linshi]# sz tes.sh -bash: /usr/bin/sz: 没有那个文 ...

  7. POJ 2676:Sudoku 数独

    Sudoku Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 15830   Accepted: 7737   Special ...

  8. 10. react 基础 ref 的使用 及 React 16 的生命周期函数 及 生命周期函数使用场景

    一. ref 的使用 ( 直接获取 DOM 元素 ) 在 input 标签上 可以使用 ref 属性 获取当前DOM节点 eg: import React , { Component, Fragmen ...

  9. .pcd格式点云文件的显示

    利用pcl_viewer工具pcl_viewer rtabmap_cloud.pcd

  10. Springboot 2.x 如何解决重复提交 (本地锁的实践)

    有没有遇到过这种情况:网页响应很慢,提交一次表单后发现没反应,然后你就疯狂点击提交按钮(12306就经常被这样怒怼),如果做过防重复提交还好,否则那是什么级别的灾难就不好说了... 本文主要是应用 自 ...