第六章 SysTick实验
6.1 实验目的通过本实验学习SysTick定时器(操作系统的心跳)的使用,实现精准的定时。
6.2 实验简介SysTick定时器被捆绑在NVIC中,用于产生SysTick异常。在以前,操作系统和有所有使用了时基的系统,都必须要一个硬件定时器来产生需要的“滴答”中断,作为整个系统的时基。滴答中断对操作系统尤其重要。例如,操作系统可以为多个任务许以不同数目的时间片,确保没有一个任务能霸占系统;或者把每个定时器周期的某个时间范围赐予特定的任务等,还有操作系统提供的各种定时功能,都与这个滴答定时器有关。因此,需要一个定时器来产生周期性的中断,而且最好还让用户程序不能随意访问它的寄存器,以维持操作系统“心跳”的节律。
所有的Cortex M4都有这个定时器,它属于Cortex的内核部件,所有的CM4芯片的SysTick都是相同的,处理方式都一样,这样它使得基于此定时器时基的操作系统和软件在所有CM4芯片间的移植变得简单多了。
SysTick是一个24位定时器,计数器以递减的方式工作,递减到0,硬件自动重装计数值,如果使能中断,则产生中断。它的使用配置很简单,下面我们了解一下:
SYysTick的寄存器有4个如下,一般我们只用前3个
SysTick控制寄存器,在初始化时要对此寄存器进行配置。
SysTick重装寄存器,每当计数到0时,此寄存器值自动装入SysTick的递减计数器。
SysTick的递减计数器
6.3 电路设计SysTick定时器属于STM32内部资源,不需要外接其它电路,这里用板载的D5、D6指示灯的循环闪烁指示SysTick的定时功能。电路图略过。
6.4 软件设计 打开光盘目录下的3、程序源码->1、基础实验->下的实验3 SysTick实验工程,打开左侧目录树BSP下的Systick.c文件,此为SysTick的驱动程序文件,工程目录如下图所示:
图6.4.1
打开Systick.c文件,代码如下:
图6.4.2
打开main.c文件,初始化系统时钟、LED管脚配置以及SysTick中断设置,每当1S中断到达时,翻转D5、D6这2个LED的输出状态,实现LED的闪烁,代码如下:
图6.4.3
6.5 下载验证用MINI USB线通过CN3的USB口连接电脑和开发板,拨动电源开关给开发板上电,D3电源指示灯点亮,连接好JLINK/ST-LINK下载调试器,打开“实验3 SysTick实验”工程代码,编译下载,D4 、D5指示灯,以1S的间隔闪烁,蜂鸣器鸣叫,用跳帽短接P8排针的1、3引脚,将D4连接到STM32的PB0引脚上如此循环。
此内容由EEWORLD论坛网友hejecu原创,如需转载或用于商业用途需征得作者同意并注明出处