GPIO
前言
集成电路
将大量的分立元件通过特殊工艺集成在很小的半导体芯片上。
引脚
又叫管脚,英文叫Pin。
从
集成电路
(芯片)内部电路引出,与外围电路的
接线
。
所有的引脚构成了这块芯片的接口
。
GPIO
通用输入输出端口的简称。
简单来说就是 STM32 可控制的
引脚
,可以通过它们输出高低电平或者通过它们读入引脚的状态-是高电平或是低电平。
STM32 芯片的 GPIO 引脚与外部设备连接起来,从而实现与外部
通讯、控制以及数据采集
的功能。
STM32 芯片的 GPIO 被分成很多组,每组有 16 个引脚。如型号为 STM32F103ZET6 的芯片有 GPIOA、GPIOB至 GPIOG 共 7 组 GPIO。 芯片一共 144 个引脚,其中GPIO 就占了一大部分
。
门电路
实现基本逻辑运算和复合运算的单元电路。
常用的门电路有非门、与非门、或非门、异或门、与或非门等
。
门电路有一个
阈值电压
,当输入电压从低电平上升到阈值电压或从高电平下降到阈值电压时,电路的
状态
将发生变化。
施密特触发器
Schmitt trigger,一种特殊的门电路。
与普通的门电路不同,施密特触发器有
两个阈值电压
,分别称为正向阈值电压和负向阈值电压。
寄存器
register,存放数据的一些小型存储区域,暂时存放参与运算的数据和运算结果。
STM32的GPIO寄存器CRL、CRH、IDR、ODR、BSRR、BRR
.
时钟
单片机运行的基础。
时钟信号推动单片机内各个部分执行相应的指令。
AHB
Advanced High performance Bus的缩写,译作高级高性能总线,一种“系统总线”。
主要用于高性能模块(如CPU、DMA和DSP等)之间的连接。AHB 系统由
主模块、从模块和基础结构
3部分组成,整个AHB总线上的传输都由主模块发出,由从模块负责回应。
CPU
中央处理器(central processing unit)
作为计算机系统的运算和控制核心,是信息处理、程序运行的最终执行单元。
ADC
Analog-to-Digital Converter,模拟数字转换器。
将
连续
变化的
模拟信号
转换
离散
的数字信号的器件。
GPIO的工作模式
输入模式
施密特触发器打开,输出被禁止。
数据
寄存器
每隔1个
AHB1时钟
周期更新一次,可通过
输入数据寄存器
GPIOx_IDR
读取I/O状态。
输入浮空(GPIO_Mode_IN_FLOATING)
浮空就是逻辑器件与引脚既不接高电平,也不接低电平。由于逻辑器件的内部结构,相当于接了高电平。
一般实际运用时,引脚不建议悬空,易受干扰,
这种设置在数据传输时用的比较多
。
输入上拉(GPIO_Mode_IPU)
将不确定的信号通过一个电阻嵌位在高电平。
减少干扰,电阻同时起到限流的作用。
输入下拉(GPIO_Mode_IPD)
将不确定的信号通过一个电阻嵌位在低电平。
减少干扰,电阻同时起到限流的作用。
模拟输入(GPIO_Mode_AIN)
传统方式的输入。
前三者CPU可以随时读取IO口的电平状态。与之不同,从IO口过来的模拟量要被
ADC
转换成数字量才能被CPU读取。
输出模式
输出使能,此时施密特触发器是打开的,即输入可用,通过输入数据寄存器GPIOx_IDR可读取I/O的实际状态。
由于输出模式时,引脚电平会受到输出数据寄存器GPIOx_ODR影响,而ODR寄存器对应引脚的位为0,即引脚初始化后默认输出低电平
。
开漏输出(GPIO_Mode_Out_OD)
推挽输出(GPIO_Mode_Out_PP)
复用功能
开漏复用功能(GPIO_Mode_AF_OD)
推挽复用功能(GPIO_Mode_AF_PP)
GPIO的配置方法
- 配置时钟并使能。
- 选择引脚。
- 配置引脚模式。
- 最后调用库函数初始化GPIO,将配置写入。
STM32 CubeMx
一个图形化的工具,也是配置和初始化STM32代码生成器。
自动生成开发初期关于芯片相关的一些初始化代码,
它把很多东西封装的比较好,硬件抽象层、中间层、示例代码等
。
-
STM32 CubeMX的特性
- 直观的选择 STM32 微控制器
- 微控制器图形化配置
- 自动处理引脚冲突
- 动态设置确定的时钟树
- 可以动态确定参数设置的外围和中间件模式和初始化
-
代码工程生成器覆盖了STM32微控制器初始化编译软件,
如IAR、
KEIL
、GCC