[百问网 7Day物联网智能家居实战训练]Day3基础 时钟与GPIO
1.时钟
1.1 时钟特点:
- 现代计算机系统,必定有时钟
- 高级的单片机系统中,有不同频率的时钟
1.2时钟
作用:
提供基准频率来源
频率:
时钟频率越高,单片机运行越快。
时钟源:
振荡器、分频器。
振荡器 |
产生固定频率方波 |
RC震荡器 |
优点:成本低、可集成 |
缺点:温飘大、频率不稳定。 |
晶体振荡器 |
温飘小 |
体积大、不可集成 |
||
分频器 |
将振荡器的频率分为多段 |
由锁相环(PLL)实现 |
时钟树:
描述震荡器、分频器间的关系。
4种振荡器:
名称 |
频率 |
外部连接 |
功能 |
用途 |
特性 |
HSE |
4~16MHz |
4~16MHz |
系统时钟/RTC |
成本高、温飘小 |
|
LSE |
32kHz |
32.768kHz |
带校准 |
RTC |
成本高、温飘小 |
HSI |
4MHz |
出厂调校 |
系统时钟 |
成本低、温飘大 |
|
LSI |
40kHz |
带校准 |
RTC |
成本低、温飘大 |
分频器:
分频器 |
/2 |
数字表示几分频 |
锁相环PLL |
x2 |
数字表示几倍频 |
选择器:
:长边:多个输入,短边:选择其中一个输出
2.GPIO
GPIO(General-Purpose IO ports,通用输入/输出接口)
输入模式 |
感知外界信号 |
输出模式 |
控制外部设备 |
引脚与模块连接 |
控制引脚输出/读取高低电平 |
LED、按键、蜂鸣器、温度传感器等 |
多个引脚 |
“协议”进行通信 |
UART、I²C、SPI接口等 |
STM32的GPIO:
引脚 |
48个 |
除去电源引脚、晶振时钟引脚、复位引脚、启动选择引脚、 程序下载引脚(大部分为最小系统必须引脚),剩下则是GPIO引脚。 |
分组GPIOx |
x:A、B、C |
16个引脚/组;编号:0~15。【STM32F103C8T6:2组】 |
8种工作模式 |
输出模式 |
推挽、开漏、复用推挽、复用开漏 |
《手册8.1.2》 |
输入模式 |
上拉、下拉、浮空、模拟 |

输入模式 |
||
上拉输入 |
|
没有按键按下,默认输入为高电平 |
下拉输入 |
|
没有按键按下,默认输入为低电平 |
浮空输入 |
|
外部电平=>I/O引脚电平。 |
模拟输入 |
|
输出模式 |
||
推挽输出 |
输出控制:1--VDD ;0---VSS |
输出电流增大、提高负载能力 |
开漏输出 |
1---VDD; 0--VSS 1--VCC;使用外部上拉 |
同推挽。 实现电平转换 |
复用推挽输出 |
||
复用开漏输出 |
使用外部上拉VCC
复用:使用片上外设引脚输出高低电平。
设置:
GPIO输出速度:
STM32提供三个输出速度:2MHz、10MHz、50MHz。
注意:I/O引脚输出模式下,需要配置输出速度。该输出速度不是输出信号的速度,而是I/O口驱动电路响应速度。
选择输出速度:考虑功耗、稳定性。
高速时,功耗高、噪声大、电磁干扰强;I 2 C、SPI等通信信号,建议10MHz或50MHz
低速时,功耗低、噪声小、电磁干扰弱。LED灯、蜂鸣器灯,建议2MHz
点亮LED:
硬件设计:
知识补充:
LED: Light Emitting Diode,发光二极管
原理:将电能转化为可见光的半导体器件,当给P极施加正向电压后,空穴和自由电子在P-N结复合,辐射出光子而发光。
分类:
LED灯原理图:
正极直接连接了3V3,LED灯的负极连接的网
络标号LED(PA1),只需要控制PA1为低电平,即可点亮LED灯,输出为高电平时熄灭LED灯。
软件设计:
设计思路
实验目的:体验嵌入式的“Hello Word”,LED灯闪烁。
1) 选择LED对应的GPIO;PA1
2) 使能所选择GPIO的时钟;默认
3) 配置其为上拉输出模式;
4) 控制其输出高或低来控制LED的亮与灭;
while (1) { /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, GPIO_PIN_RESET); HAL_Delay(1000); HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, GPIO_PIN_SET); HAL_Delay(1000); }
按键输入:
按键监测方式:按键扫描和按键中断。
按键扫描 |
间隔很短时间反复查询GPIO状态 |
代码简单 |
比较耗资源 |
按键中断 |
通过按键产生中断信号 |
需要深入学习 |
效率高 |
按键接线示意图:
按键抖动:
抖动时长:抖动的时长与机械开关特性相关,一般为5-10ms
抖动过程中:会产生多次高低电平,导致被识别为多次按键操作。
消抖处理:
硬件处理:按键旁并联电容,吸收抖动的电平;
软件处理:加延时,避开抖动。
硬件设计:
