百问网七天物联网智能家居Day3-嵌入式STM32时钟系统和GPIO接口

一、时钟系统

1、单片机时钟

    现代计算机系统中必定有时钟,且高级的单片机系统中,存在不同频率的时钟,在单片机系统中,CPU工作的频率一般非常高(stm32f103系列达到72M),但是在引脚使用中一般用不到这么高的频率,故在复杂的单片机系统中,一般有时钟的分频和倍频以及开关控制时钟的功能,可以实现不同频率的输出控制,并且可以将不需要输出的引脚关闭时钟,达到节能的效果

2、stm32时钟树

1)、内部(高低速)时钟:方便,不需要其他外设,缺点是精度不太高,最高只能达到64Mhz

2)、外部(高低速)时钟:成本较高一点,需要外部添加设备,但是精度高一点,最多可达到72Mhz

3)、低速时钟一般用于RTC和看门狗,高速时钟源一般用于系统时钟

3、时钟配置步骤:

打开

STM32CubeMx设置芯片引脚以及时钟配置

引脚配置

时钟配置

 怎么配置引脚使得时钟配置中可以使用外部时钟源呢?见下图

 

通过修改红色所指的位置配置gpio引脚

把时钟配置好了以后,之后需要使用时,直接使能就行 

二、stm32的GPIO

STM32F103C8T6一共有48个引脚,除去电源引脚、晶振时钟引脚、复位引脚、启动选择引脚、程序下 载引脚(大部分为最小系统必须引脚),剩下的则是GPIO引脚。 STM32将这些众多按GPIOx(x为A、B、C等)分组,每组包含16个引脚,编号为0~15。STM32F103C8T6 只有2组GPIO,每组16个引脚,即32个GPIO引脚。

91)GPIO 工作模式:

STM32F103系列的I/O引脚共有8种工作模式,其中输出模式有四种:推挽输出、开漏输出、复用推挽 输出、复用开漏输出;输入模式有四种:上拉输入、下拉输入、浮空输入、模拟输入

                 图 8.1.1 STM32F103 系列 GPIO 的基本结构

1) 推挽输出(Push-Pull,PP) 推挽结构由两个MOS管按互补对称的方式连接,任意时刻总是其中一个MOS管导通,另一个MOS管截 止。如图 8.1.1 中①所示,内部由一个P-MOS管和一个N-MOS管组成,两个MOS管的栅极(Gate,G)接到 了左侧“输出控制”,漏极(Drain,D)接到外部输出,P-MOS管的源极(Source,S)接到VDD(3.3V), N-MOS管的源极接到Vss(0V)。 MOS管作为开关使用,“输出控制”向两个MOS管栅极加一定电压,P-MOS管源极和漏极之间导通, VDD 经过P-MOS管的S->G->D输出,N-MOS管处于高阻态(电阻很大,近似开路),整体对外为高电平; “输出控制”取消向两个MOS管栅极施加电压,P-MOS管源极和栅极截止,P-MOS管处于高阻态,N-MOS 管源极和漏极导通,整体对外为低电平。 推挽模式,让“输出控制”变为了VDD/Vss输出,使得输出电流增大,提高了输出引脚的驱动能力,提高 了电路的负载能力和开关的动作速度。

2) 开漏输出(Open-Drain,OD) 开漏模式下,“输出控制”不会控制P-MOS管,“输出控制”只会向N-MOS管栅极加一定电压,两个 MOS管都处于截止状态,两个漏极处于悬空状态,称之为漏极开路。“输出控制”取消栅极的施加电压,PMOS管依旧处于高阻态,N-MOS管导通,整体对外为低电平。 开漏输出模式可以等效将图 8.1.2 中灰色框的P-MOS管看作不存在。即该模式下只能输出低电平,若要 输出高电平,则需要外接电阻,所接的电阻称为上拉电阻,此时输出电平取决于此时上拉电阻的外部电源电 压情况,如图 8.1.2 中蓝色框的外部电路

 3) 复用功能推挽/开漏输出(Alternate Function,AF) GPIO引脚除了作为通用输入/输出引脚使用外,还可以作为片上外设(USART、I 2 C、SPI等)专用引脚, 即一个引脚可以有多种用途,但同一时刻一个引脚只能使用复用功能中的一个。 当引脚设置为复用功能时,可选择复用推挽输出模式或复用开漏输出模式,在设置为复用开漏输出模式 时,需要外接上拉电阻。

4) 上拉输入模式(Input Pull-up) 如图 8.1.1 中②所示,VDD经过开关、上拉电阻,连接外部I/O引脚。当开关闭合,外部I/O无输入信号 时,默认输入高电平。 该模式的典型应用就是外接按键,当没有按键按下时候,MCU的引脚为确定的高电平,当按键按下时 候,引脚电平被拉为低电平。 5) 下拉输入模式(Input Pull-down) 如图 8.1.1 中②所示,Vss经过开关、下拉电阻,连接外部I/O引脚。当开关闭合,外部I/O无输入信号时, 默认输入低电平。

6) 浮空输入模式(Floating Input) 如图 8.1.1 中②所示,两个上/下拉电阻开关均断开,既无上拉也无下拉,I/O引脚直接连接TTL肖特基 触发器,此时I/O引脚浮空,读取的电平是不确定的,外部信号是什么电平,MCU引脚就输入什么电平。MCU 复位上电后,默认为浮空输入模式。

7) 模拟输入模式(Analog mode) 如图 8.1.1 中②所示,两个上/下拉电阻开关均断开,同时TTL肖特基触发器开关也断开,引脚信号直接 连接模拟输入,实现对外部信号的采集。

(2)按键的机械抖动

按键一般占用一个GPIO口,通过监测该GPIO的电平变化得知按键操作,当所需按键比较多时,可以采用矩阵按键减少GPIO的占用,矩阵按键需要通过编程扫描等方式实现对多 个按键的监控,以最简单的独立按键为基础进行介绍

 由上图可知:在没有按下按键时,电源3.3V通过电阻连接到MCU的PA0脚上,此时MCU读取PA0的电平就 是3.3V的高电平。在按键按下时,电源3.3V经过电阻,再经过按键连接到了地,此时PA0连接到接地的一端, 读到的电平就是0V的低电平。

机械抖动:常用的按键都是机械触点式按键,机械式按键在按下或释放的过程中,由于机械弹性作用的影响,会伴随机械抖动,如下图所示:

 抖动的时长与机械开关特性相关,一般为5-10ms。在这抖动过程中,会产生多次高低电平,导致被识别 为多次按键操作。为了避免机械触点按键检测误判,必须消抖处理。

按键消抖可以硬件上处理,即在按键旁 并联电容,吸收抖动的电平。

可以软件处理,即通过延时,避开抖动。 由此,首先获取对应引脚的电平得知按键状态,再硬件或软件消除抖动。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

myplybk

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值