《嵌入式 – GD32开发实战指南(RISC-V版本)》第5章 跳动的心脏-内核TIMER
开发环境:
IDE:MounRiver Studio
开发板:GD32VF103V-EVAL
MCU:GD32VF103VB
RISC-V的内核中包含System Timer (SysTick)了,当然也可以叫做Systick,只要是RISC-V系列的MCU就会有Systick,只是有些名字不同罢了, bumblebee内核数据手册叫它计时器单元(TIMER),为了方便和其他外部timer对比,笔者还是叫它SysTick。下面详细分析。
1 Systick工作原理分析
SysTick 定时器被捆绑在RISC-V内核中,用于产生 SysTick 异常。在以前,操作系统和所有使用了时基的系统都必须有一个硬件定时器来产生需要的“滴答”中断,作为整个系统的时基。滴答中断对操作系统尤其重要。例如,操作系统可以为多个任务分配不同数目的时间片,确保没有一个任务能霸占系统;或者将每个定时器周期的某个时间范围赐予特定的任务等,操作系统提供的各种定时功能都与这个滴答定时器有关。因此,需要一个定时器来产生周期性的中断,而且最好还让用户程序不能随意访问它的寄存器,以维持操作系统“心跳”的节律。
在 GD32 中SysTick 以HCLK/4作为运行时钟,见上图。
SysTick 定时器能产生中断,RISC-V为它专门开出一个异常类型,并且在向量表中有它的一席之地。它使操作系统