注册 登录
电子工程世界-论坛 返回首页 EEWORLD首页 频道 EE大学堂 下载中心 Datasheet 专题

hejecu的个人空间 http://home.eeworld.com.cn/space-uid-309995.html [收藏] [复制] [分享] [RSS]

日志

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

已有 29 次阅读2018-11-4 11:25 |个人分类:闪电F407开发板资料

第六章 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控制寄存器,在初始化时要对此寄存器进行配置。
                              
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中断到达时,翻转D5D62LED的输出状态,实现LED的闪烁,代码如下:
图6.4.3



此内容由EEWORLD论坛网友hejecu原创,如需转载或用于商业用途需征得作者同意并注明出处
6.5 下载验证
用MINI USB线通过CN3的USB口连接电脑和开发板,拨动电源开关给开发板上电,D3电源指示灯点亮,连接好JLINK/ST-LINK下载调试器,打开“实验3 SysTick实验”工程代码,编译下载,D4 、D5指示灯,以1S的间隔闪烁,蜂鸣器鸣叫,用跳帽短接P8排针的1、3引脚,将D4连接到STM32的PB0引脚上如此循环。

本文来自论坛,点击查看完整帖子内容。

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

小黑屋|手机版|Archiver|电子工程世界 ( 京ICP证 060456 )

GMT+8, 2018-11-21 01:38 , Processed in 0.015545 second(s), 10 queries , Gzip On, MemCache On.

Powered by EEWORLD电子工程世界

© 2018 http://bbs.eeworld.com.cn/

返回顶部