systick和Timer的应用区别

SysTick 和 Timer(通用定时器)都是嵌入式系统中常见的定时器,它们的区别、应用场景、优势和劣势如下:

区别

  • 功能定位:SysTick 主要用于为系统提供一个周期性的时钟节拍,常被操作系统用于任务调度等系统级功能;通用 Timer 功能更为丰富和灵活,可用于定时中断、输入捕获、输出比较、PWM 输出等多种功能。
  • 时钟来源:SysTick 的时钟源通常来自系统时钟,其定时精度取决于系统时钟频率;通用 Timer 的时钟源较为多样,除了系统时钟,还可能有外部时钟等其他可选时钟源。
  • 计数位数和范围:SysTick 一般为 24 位递减计数器;通用 Timer 的计数位数可能因具体芯片型号和类型而异,常见的有 16 位、32 位等,计数范围相对更灵活。
  • 中断机制:SysTick 的中断优先级通常较高,主要用于系统关键的时间管理任务;通用 Timer 的中断优先级可根据需求进行配置,应用于各种不同实时性要求的任务。
  •  NVIC_SetPriority (SysTick_IRQn, (1<<__NVIC_PRIO_BITS) - 1);  /* set Priority for Cortex-M0 System Interrupts */,这个是SysTick_Config(SystemCoreClock / 100);            //使用48M作为系统时钟,那么计数器减1等于1/48M(ms), (1/48000000hz)*(48000000/100)=0.01S=10ms 中设置中断优先级的,__NVIC_PRIO_BITS=4,(1<<__NVIC_PRIO_BITS) - 1)为7

应用场景

  • SysTick
    • 操作系统任务调度:为操作系统提供精确的时间基准,用于实现任务切换、时间片分配等功能。
    • 系统时间管理:记录系统运行时间,提供系统级的时间戳。
    • 低功耗唤醒:在系统进入低功耗模式时,可继续运行以实现基于时间的唤醒功能。
  • 通用 Timer
    • 定时中断:实现周期性的定时中断,用于执行周期性的任务,如传感器数据采集、LED 闪烁控制等。
    • 输入捕获:测量外部信号的脉冲宽度、频率等参数。
    • 输出比较:用于产生特定时刻的触发信号,如控制电机的启停时间点。
    • PWM 输出:生成不同占空比的 PWM 信号,用于电机调速、灯光亮度调节等。

优势

  • SysTick
    • 简单易用:结构相对简单,配置方便,易于上手。
    • 系统级支持好:与系统时钟紧密关联,能很好地满足操作系统对时间管理的需求。
    • 低功耗运行:可在低功耗模式下继续工作,提供时间基准。
  • 通用 Timer
    • 功能丰富:具备多种功能模式,能满足各种复杂的定时和控制需求。
    • 灵活性高:时钟源、计数位数、中断优先级等均可灵活配置。

劣势

  • SysTick
    • 功能单一:仅能实现基本的定时和产生中断,难以满足复杂的定时控制需求。
    • 时钟源受限:通常只能使用系统时钟,不够灵活。
  • 通用 Timer
    • 配置复杂:由于功能丰富,配置相对复杂,需要对各个功能寄存器进行详细设置。
    • 资源占用:使用多个通用 Timer 可能会占用较多的系统资源(如时钟资源、中断资源等)。

你可能感兴趣的:(单片机,stm32,嵌入式硬件)