1. 串口通信与定时器的核心关联
在嵌入式系统开发中,串口通信和定时器是两个最基础也最重要的外设模块。它们看似独立,实则存在紧密的协同关系。定时器为串口通信提供了精确的时间基准,而串口通信则扩展了定时器的应用场景。
以STM32的USART2和TIM2为例,这种组合在工业控制、传感器数据采集等场景中非常常见。定时器2可以精确控制串口2的数据发送间隔,实现周期性的数据上报;反过来,串口接收到的指令也可以通过定时器来精确控制执行时序。这种硬件级的配合大大减轻了CPU的负担,提高了系统可靠性。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 硬件架构深度解析
2.1 STM32的串口子系统
STM32的串口控制器(USART)支持同步/异步通信,主要包含以下关键部件:
- 波特率发生器:由时钟源和分频器组成,决定通信速率
- 数据寄存器(TDR/RDR):存放待发送/已接收数据
- 状态寄存器(ISR):反映传输状态(发送完成、接收就绪等)
- 控制寄存器(CR1/CR2/CR3):配置工作模式、中断使能等
USART2通常位于APB1总线,最大时钟频率取决于具体型号(如STM32F103为36MHz)。其波特率计算公式为:
code复制波特率 = fCK / (8 × (2 - OVER8) × USARTDIV)
其中OVER8为过采样模式,USARTDIV为分频系数。
2.2 定时器TIM2的运作机制
TIM2作为通用定时器,具有以下特点:
- 16位自动重装载计数器
- 可编程预分频器(1~65536)
- 4个独立通道(支持输入捕获/输出比较)
- 支持向上、向下、中央对齐计数模式
时钟树配置示例(以72MHz系统时钟为例):
code复制SYSCLK(72MHz) → APB1 Prescaler(÷2) → APB1(36MHz)
→ TIM2/3/4 multiplier(×2) → TIM2_CLK(72MHz)
定时周期计算公式:
code复制Tout = (ARR + 1) × (PSC + 1) / TIMx_CLK
其中ARR为自动重载值,PSC为预分频系数。
3. 工程配置实战
3.1 CubeMX基础配置
- 时钟配置:
- 启用HSE(外部高速晶振)
- 配置PLL将时钟倍频至72MHz
