STM32F103X datasheet学习笔记---GPIOs and AFIOs
1.前言
每个GPIO端口有如下几个寄存器进行操作:
- 两个32位配置寄存器:GPIOx_CRL, GPIOx_CRH
- 两个32位数据寄存器:GPIOx_IDR, GPIOx_ODR
- 一个32位set/reset寄存器:GPOx_BSRR
- 一个16位reset寄存器:GPIOx_BRR
- 一个32位锁定寄存器:GPIOx_LCKR
注:GPIO_BRR和GPIO_BSRR支持读写的原子访问
每组GPIO的 port可以配置成如下的IO方式:

2.GPIO基本结构

图 标准GPIO位的基本结构
图 port bit配置表

图 输出模式bit
3.GPIO功能描述
3.1 通用目的IO(GPIO)
- reset过程中或刚reset后
引脚的可选功能是无效的,端口被配置成Input Floating Mode(CNFx[1:0]=01b, MODEx[1:0]=00b).
RESET后JTAG pin:PA15: JTDI in PU 、 PA14: JTCK in PD 、 PA13: JTMS in PU 、 PB4: NJTRST in PU
- 配置为输出模式
写到GPIOx_ODR中的值被输出到port引脚,可能使用的驱动模式:push-pull or open-drain
- 配置为输入模式
GPIOx_IDR在每个APB2时钟周期会捕获IO引脚上的数据
注:1.每个GPIO PIN都有一个弱上拉和一个弱下拉,在配置为输入模式时可以决定是否使能
- 原子的bit set/reset
在操作GPIO_ODR寄存器的时候没有必要关中断,通过写入GPIO_BRR或GPIO_BSRR来set或reset GPIO的相关port bit
- 外部中断/唤醒线
所有的gpio端口都具有中断/唤醒功能,要使用外部中断线,需要配置为输入功能
- IO配置锁定功能
当配置锁定功能后,GPIO的port bit将不能修改,除非reset
- GPIO寄存器说明
GPIO_CRL:设置GPIO低8个port bit的输入/输出模式、设置driver方式;
GPIO_CRH:设置GPIO高8个port bit的输入/输出模式、设置driver方式;
GPIO_IDR:显示每个GPIO port的输入值
GPIO_ODR:设置每个GPIO port的输出值
GPIO_BSRR:标记输出值寄存器的哪些位需要set/reset
GPIO_BRR:标记输出值寄存器的哪些位需要REset
GPIO_LCKR:设定GPIO的哪些port bit配置被锁定
3.2 可选功能(AF)
- 可选功能输入
port必须配置为输入模式(input floating, input pull-up, intpu pull-down),且输入pin必须由外部驱动
- 可选功能输出
port必须配置为输出模式(push-pull or open-drain)
- 可选功能双向
在输出时,port必须配置为输出模式(push-pull or open-drain);在输入时port必须配成输入模式(input floating)
注:1. 配置一个 port为可选功能输出,则会断开输出寄存器,并与外设的某个输出信号引脚链接,如图 标准GPIO位的基本结构
2. 如果软件将GPIO配置为可选功能输出,但是外设没有使能,这输出状态不确定
- 软件重现映射I/O可选功能
通过配置AFIO寄存器,重映射一些功能到其它引脚,此时这些可选功能将与原有GPIO断绝关联
- 举例:配置为UART功能
- AFIO寄存器说明
AFIO_EVCR:如果置位,cotex事件将发送到某个端口的pin
AFIO_MAPR/AFIO_MAPR2:对可选功能进行重新映射
AFIO_EXTICR1/AFIO_EXTICR2/AFIO_EXTICR3/AFIO_EXTICR4:设置各个GPIO的中断线
4. 参考文献
[1] STM32F101xx, STM32F102xx, STM32F103xx, STM32F105xx and
STM32F107xx advanced ARM®-based 32-bit MCUs
STM32F103X datasheet学习笔记---GPIOs and AFIOs的更多相关文章
- STM32F103X datasheet学习笔记---RCC(reset and clock control)
1.前言 本文主要记录stm32 关于reset 和 clock部分 datasheet的内容. 2.reset 有三种类型的reset:system reset, power reset, back ...
- STM32F103X datasheet学习笔记---Flexible static memory controller (FSMC)
1.前言 FSMC模块能够与同步或异步存储器和16位PC存储器卡接口,它的主要作用是: 将AHB传输信号转换到适当的外部设备协议 满足访问外部设备的时序要求 所有的外部存储器共享控制器输出的地址.数据 ...
- STM32F103X datasheet学习笔记---Interrupts and events
1.前言 本章主要介绍STM32中断和事件相关的内容 2.NVIC NVIC管理着包括内核异常等中断 主要特性 68个外部中断源(不包含16个内部中断线) 可编程优先级为16级 低延迟异常和中断处理 ...
- STM32F103X datasheet学习笔记---DMA
1.前言 直接存储器存取(DMA)用来提供在外设和存储器之间或者存储器和存储器之间的高速数据传输. 无须CPU干预,数据可以通过DMA快速地移动,这就节省了CPU的资源来做其他操作. 两个DMA控制器 ...
- STM32F103X datasheet学习笔记---USART
1.前言 通用同步异步收发器(USART)提供了一种灵活的方法与使用工业标准NRZ异步串行数据格式的外部设备之间进行全双工数据交换. USART利用分数波特率发生器提供宽范围的波特率选择. 它支持同步 ...
- ARMV8 datasheet学习笔记5:异常模型
1.前言 2.异常类型描述 见 ARMV8 datasheet学习笔记4:AArch64系统级体系结构之编程模型(1)-EL/ET/ST 一文 3. 异常处理路由对比 AArch32.AArch64架 ...
- ARMV8 datasheet学习笔记3:AArch64应用级体系结构
1.前言 本文主要从应用的角度介绍ARMV8的编程模型和存储模型 2. AArch64应用级编程模型 从应用的角度看到的ARM处理器元素: 可见的元素(寄存器/指令) 说明 可见的寄存器 R0-R30 ...
- k64 datasheet学习笔记45---10/100-Mbps Ethernet MAC(ENET)之功能描述
1.前言 本文是对K64 datasheet 之ENET部分的功能描述,将对每个部分进行详细说明 2.Ethernet MAC frame formats MAC帧组成格式 (1)7字节前导码:如按最 ...
- k64 datasheet学习笔记3---Chip Configuration之Analog
1.前言 本文主要讲述K64芯片配置,关于模拟部分的内容,主要包括:ADC, CMP, DAC, VREF 2.16bit SAR ADC 从上图可以看出ADC主要挂在外设总线0上,由于ADC的输入引 ...
随机推荐
- 【BZOJ4161】Shlw loves matrixI (常系数齐次线性递推)
[BZOJ4161]Shlw loves matrixI (常系数齐次线性递推) 题面 BZOJ 题解 \(k\)很小,可以直接暴力多项式乘法和取模. 然后就是常系数齐次线性递推那套理论了,戳这里 # ...
- [2019/03/17#杭师大ACM]赛后总结(被吊锤记)
前言 和扬子曰大佬和慕容宝宝大佬一组,我压力巨大,而且掌机,累死我了,敲了一个下午的代码,他们两个人因为比我巨就欺负我QwQ. 依旧被二中学军爆锤,我真的好菜,慕容宝宝或者是扬子曰大佬来掌机一定成绩比 ...
- 【转】Linux root修改密码失败
问题: 当使用root修改密码时,报错passwd:Authentication token manipulation error 解决: 1.查看是否权限问题, /etc/passwd /etc/s ...
- 一个简单的mock server
在前后端分离的项目中, 前端无需等后端接口提供了才调试, 后端无需等第三方接口提供了才调试, 基于“契约”,可以通过mock server实现调试, 下面是一个简单的mock server,通过pyt ...
- Gym 100971J-Robots at Warehouse
题目链接:http://codeforces.com/gym/100971/problem/J Vitaly works at the warehouse. The warehouse can be ...
- Elasticsearch 基础知识要点与性能监控
本文的来源是我翻译国外的一篇技术博客,感谢原作者Emily Chang,原文地址通过如下的知识,我们能大致学到关于ES的一些基本知识,进而对elasticsearch的性能进行监控和调优 注意elas ...
- PowerDesigner使用(设置继承,实现)
1.File—New Mode 2添加4个class,1个接口(基本的添加工具都在这里面) 3.class1的设置名字,设置方法 3.设置继承,实现 4.编辑class2,class3继承父类的属性. ...
- .Net MVC发布出错 Server Error in '/' Application.
发布的时候遇到这个错误:Server Error in '/' Application. Could not load file or assembly 'SettingsProviderNet' ...
- python---自定义分页类
# coding:utf8 # __author: Administrator # date: 2018/3/7 0007 # /usr/bin/env python import tornado.w ...
- C#复习正则表达式
由于前段时间为了写工具学的太J8粗糙 加上最近一段时间太浮躁 所以静下心来复习 一遍以前学的很弱的一些地方 1 委托 public delegate double weituo(double a, d ...

