1 系统定时器(如ARM Cortex-M的SysTick定时器)
**基本原理:**
系统定时器,常以SysTick定时器为例,是嵌入式处理器内核的一部分,主要用于实现操作系统的基本时钟节拍、延时功能和实时任务调度。SysTick定时器基于一个内部时钟源(通常是处理器的系统时钟),其工作流程如下:
1. **配置阶段**:用户或系统初始化时设置SysTick控制及状态寄存器(SYST_CSR),包括是否使能定时器、选择时钟源(通常是不可调整的)、设定重载值(即计数达到该值时产生中断或重置计数器)。
2. **计数与中断**:SysTick开始计数,从重载值递减至0,到达0时,如果中断使能,则产生中断;同时,根据配置,计数器可能自动重载并继续下一轮计数。
3. **中断处理**:中断服务例程(ISR)处理SysTick中断时,可以执行任务调度、心跳计数等操作,是RTOS实现时间管理的基础。
**实现差异:**
- **位置与功能**:系统定时器集成在CPU内核中,专为系统级时序控制设计,不占用外部外设资源,功能相对单一,主要用于提供精确的系统时基。
- **配置简便**:相比通用定时器,系统定时器配置简单,通常只需设置重载值和控制位即可。
- **中断机制**:中断触发基于计数器自身周期性的溢出,不涉及捕获/比较功能。
2 通用定时器(如STM32的TIMx系列)
**基本原理:**
通用定时器是微控制器中的外设,功能更为丰富和灵活,广泛应用于各种计时、计数、脉冲宽度调制(PWM)、输入捕获、输出比较等场景。其工作原理大致如下:
1. **时钟源**:通用定时器可以从多个时钟源中选择,包括系统时钟、PLL输出等,时钟源经过预分频器得到所需频率。
2. **计数模式**:支持多种计数模式,如向上计数、向下计数、中心对齐等,计数器(TIMx_CNT)根据所选模式递增或递减。
3. **输入捕获与输出比较**:通过比较寄存器(CCRx)可以设定阈值,当计数器达到或超过这些阈值时,可以触发输入捕获(记录事件发生的时间)或输出比较(改变输出引脚状态,用于PWM生成等)。
4. **中断与DMA**:通用定时器的多个事件(如计数溢出、比较匹配、捕获事件等)均可触发中断或DMA请求,允许用户编写复杂的定时逻辑。
**实现差异:**
- **灵活性与复杂性**:通用定时器提供更多的功能模块和配置选项,如多通道输入输出、重复计数器、死区生成等,适用于多样化的应用需求。
- **外设资源占用**:作为独立外设,通用定时器占用芯片的外设总线资源,如APB1或APB2,与CPU内核分离。
- **中断机制**:不仅基于计数器溢出,还能够基于特定的比较匹配事件产生中断,增加了功能的多样性和控制的精确度。
总结而言,系统定时器作为系统级的时钟源,更侧重于简单、高效地提供基本的时序服务,而通用定时器则提供了更为复杂和灵活的定时和控制功能,适用于广泛的嵌入式应用场合。

2062

被折叠的 条评论
为什么被折叠?



