1、 GPIO、USART1、USART2、TIM 分别是什么意思?
这几个都是 MCU 里的外设模块名。
1)GPIO 是什么?
全称:
General Purpose Input Output
通用输入输出口
意思就是:
可以拿来当普通输入脚或普通输出脚用的引脚控制模块。
比如:
- 点 LED
- 读按键
- 输出高低电平
- 读取引脚状态
2)USART1 / USART2 是什么?
全称:
Universal Synchronous/Asynchronous Receiver/Transmitter
中文常叫:
通用同步/异步收发器
入门时可以先把它简单理解成:
串口通信外设
最常见用途:
- 串口打印信息
- 和电脑串口助手通信
- 和别的模块收发数据
比如经常说的:
- 9600
- 115200
这些波特率,一般就是 USART 在干活。
USART1 和 USART2 的区别
本质上它们都是串口外设,只是:
- 是不同编号的串口模块
- 引脚位置不同
- 所挂总线不同
- 时钟来源不同
可以理解成:
芯片里有不止一个串口口子。
3)TIM 是什么?
全称:
Timer
定时器
它是用来做时间相关控制的外设。
常见用途:
- 定时中断
- 延时基准
- PWM 输出
- 测频
- 输入捕获
- 输出比较
现在 LED 用 HAL_Delay() 闪烁,还没真正用到硬件定时器。
以后你要做:
- 每 1 秒闪一次灯
- 呼吸灯
- PWM 调光
- 测脉冲频率
这些就经常会用 TIM。
2、巧计"
GPIO
控制引脚高低电平、读引脚状态的模块
USART1 / USART2
用来串口收发数据的模块
TIM
用来计时、定时、输出 PWM 的模块
3、为什么要关心"挂在哪条总线"?
因为这直接影响两件事:
1)要开哪路时钟
比如:
- GPIOE 在 APB2
- 那就要开 GPIOE 时钟
2)外设实际时钟是多少
比如:
- USART1 在 APB2
- APB2 = 72MHz
- 那 USART1 的时钟基准和 72MHz 有关
而:
- USART2 在 APB1
- APB1 = 36MHz
- 那 USART2 的计算基准就和 36MHz 有关
这会直接影响:
- 串口波特率
- 定时器定时周期
- PWM 频率