[原创] 【连载】【星光闪电STM32F407开发板】第六章SysTick验

hejecu   2018-11-4 11:26 楼主
                   第六章 SysTick实验

6.1 实验目的
通过本实验学习SysTick定时器(操作系统的心跳)的使用,实现精准的定时。

6.2 实验简介
SysTick定时器被捆绑在NVIC中,用于产生SysTick异常。在以前,操作系统和有所有使用了时基的系统,都必须要一个硬件定时器来产生需要的“滴答”中断,作为整个系统的时基。滴答中断对操作系统尤其重要。例如,操作系统可以为多个任务许以不同数目的时间片,确保没有一个任务能霸占系统;或者把每个定时器周期的某个时间范围赐予特定的任务等,还有操作系统提供的各种定时功能,都与这个滴答定时器有关。因此,需要一个定时器来产生周期性的中断,而且最好还让用户程序不能随意访问它的寄存器,以维持操作系统“心跳”的节律。
所有的Cortex M4都有这个定时器,它属于Cortex的内核部件,所有的CM4芯片的SysTick都是相同的,处理方式都一样,这样它使得基于此定时器时基的操作系统和软件在所有CM4芯片间的移植变得简单多了。
SysTick是一个24位定时器,计数器以递减的方式工作,递减到0,硬件自动重装计数值,如果使能中断,则产生中断。它的使用配置很简单,下面我们了解一下:
SYysTick的寄存器有4个如下,一般我们只用前3个
名称
描述
访问
复位值
地址
STK_CTRL
系统定时器控制和状态寄存器
RW
0
0xE000E010
STK_LOAD
系统定时器重载值寄存器
RW
Unknown
0xE000E014
STK_VAL
系统定时器当前值寄存器
RW
Unknown
0xE000E018
STK_CALIB
系统定时器校准值寄存器
RO
0xC0000000
0xE000E01C


SysTick控制寄存器,在初始化时要对此寄存器进行配置。
                               图片1.png
SysTick重装寄存器,每当计数到0时,此寄存器值自动装入SysTick的递减计数器。
                               图片2.png
SysTick的递减计数器
                              图片3.png

6.3 电路设计
SysTick定时器属于STM32内部资源,不需要外接其它电路,这里用板载的D5、D6指示灯的循环闪烁指示SysTick的定时功能。电路图略过。

6.4 软件设计
打开光盘目录下的3、程序源码->1、基础实验->下的实验3 SysTick实验工程,打开左侧目录树BSP下的Systick.c文件,此为SysTick的驱动程序文件,工程目录如下图所示:
图片4.png
图6.4.1
打开Systick.c文件,代码如下:
                                     图片5.png

6.4.2

打开main.c文件,初始化系统时钟、LED管脚配置以及SysTick中断设置,每当1S中断到达时,翻转D5D62LED的输出状态,实现LED的闪烁,代码如下:
图片6.png
图片7.png
图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原创,如需转载或用于商业用途需征得作者同意并注明出处


回复评论

暂无评论,赶紧抢沙发吧
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复