简单叙述
此次csdn博客是在学习STM32过程当中学习的总结,同时是在借鉴许多大神博主和视频整合,因此会有许多相似之处,但是每一篇博客都是自己一步一步总结出来的,如果有不足,可批评指出,望与诸君共勉,STM32每一篇每一步都是需要一步一步去了解深入强化密不可分,切不可学了一部分忘了一部分,也不是单独分开,需要随着学习去不断整合,此次STM32博客,为了使许多一起学习的人可以更好去了解,每一篇每一部分都会以最简单最简洁的方式去记,不需要什么都去看,只要掌握主要部分会用即可,而且每一篇博客都是只是针对该部分去讲解,不会涉及后面,等后续学习补充了就会一步步去完善强化
视频:STM32江协科技,野火STM32F103,正点原子等都可以去看,都是比较好的视频
STM32入门-GPIO端口的八种工作模式
一.GPIO简介
1.GPIO (general purpose input output)是通用输入输出端口的简称,可配置为8种输入输出工作模式,简单来说就是软件可控制的引脚,STM32芯片的GPIO引脚与外部设备连接起来,从而实现与外部通讯、控制以及数据采集的功能。引脚电平为0V-3.3V,部分引脚可容忍5V。
输出模式下可控制端口输出高低电平,用以控制驱动LED、控制蜂鸣器、模拟通信协议输出时序等
输入模式下可读取端口的高低电平或电压,用于读取按键输入、外接模块电平信号输入、ADC电压采集、模拟通信协议接受数据等
二.GPIO基本结构
芯片的引脚电平0~3.3V,部分引脚可以5V,引脚的两个保护二级管可以防止引脚外部过高或过低的电压输入
1.当引脚电压高于VDD 时,上方的二极管导通防止过高电压进入芯片内部烧坏芯片
2.当引脚电压低于 VSS 时,下方的二极管导通防止电压过低,从芯片内部汲取电流
具有滤波的作用,就是让通过的电平输出稳定的高低电平
三.GPIO的八种工作模式
在输入模式时,施密特触发器打开,输出被禁止,可通过输入数据寄存器 GPIOx_IDR读取 I/O 状态。
由于电阻阻值很大这里的上拉下拉输入都是弱上拉 弱下拉,为了对外部输入产生很大的影响
上拉输入:给一个默认的高电平也就是说当没有外部输入时默认输入高电平
下拉输入:给一个默认的低电平也就是说当没有外部输入时默认输入低电平
浮空输入:如果输入引脚啥都不接,此时输入电平极易受外界的干扰导致输入电平不确定,完全由外部的输入决定
模拟输入:片上外设ADC,从外部读取模拟信号
模拟信号:测试信号未经过采样前,均是时间和幅值均是连续的信号称为模拟信号,例如连续变化的电压,电流,温度等等
数字信号:模拟信号经等间隔“采样”及幅值量化以后,时间和幅值均是不连续的(离散)的信号
推挽输出
当输出寄存器输出高电平,则引脚也输出高电平
当输出寄存器输出低电平,则引脚也输出低电平
开漏输出
当输出寄存器输出低电平,则引脚也输出低电平(如果需要输出高电平,则要接上拉电阻)
复用开漏/推挽输出(后续学习会用到)
复用功能模式中,输出使能,输出速度可配置,可工作在开漏及推挽模式, 但是输出信号源于其它外设输出数据寄存器 GPIOx_ODR 无效;输入可用,通过输入数据寄存器可获取 I/O 实际状态,但一般直接用外设的寄存器来获取该数据信号
四.GPIO软件配置(这里用到RCC和GPIO两个外设)
第一步,使用RCC开启GPIO的时钟
第二步,使用GPIO_init函数初始化GPIO
第三步,使用输出或输入的函数控制GPIO
RCC外设一般用到以下这三个
GPIO外设一般用到以下八个
具体配置步骤(每一个固件库系列不一样,但是配置步骤原理是相通的)
五.寄存器总览
GPIOx_CRL 端口配置低寄存器
GPIOx_CRH 端口配置高寄存器
GPIOx_IDR 端口输入数据寄存器
GPIOx_ODR 端口输出数据寄存器
GPIOx_BSRR 端口设置/清除寄存器
GPIOx_BRR 端口位清除寄存器
GPIOx_LCKR 端口配置锁定寄存器
GPIOx_DCR 端口输出开漏控制寄存器
总结
在学习STM32时寄存器原理部分是很重要的,但是前期学习阶段或者使用阶段可以直接运用上文第四部分的操作配置即可,在后续慢慢学习的时候可以对寄存器原理会更加明白。