新闻中心

EEPW首页>嵌入式系统>设计应用> STM32学习笔记——使用SysTick定时器做延时

STM32学习笔记——使用SysTick定时器做延时

作者: 时间:2016-11-28 来源:网络 收藏
开学了,无法再像假期一样能够一整天玩板了!好在这学期的课说少不少,说多也不多,每周也有十几大节。剩下的时间除去学生工作等一些七七八八的事情,间断着还是能看看教程玩玩板!越发发现《STM32菜鸟学习手册——啰嗦版》真是不错的入门教程,简单易懂。其他诸如《固件库手册》等等官方文件更是必不可少,可惜ST公司的网页找手册实在麻烦得很呐!

这两天一直在看有关于系统嘀嗒时钟SysTick的文件,但由于3.5版的固件库较2.0版的库,已经将SysTick相关的驱动函数移除,用户要使用SysTick就必须改为调用CMSIS中的函数,而网上大多数的例程(包括《菜鸟学习手册》)使用的都是2.0的库,以至于在学习中遇到许多问题,程序编译总会出现问题。一般都是“无法找到与SysTick相关的函数,函数未定义”错误。因此,查找了许多文献才得以解决。

本文引用地址://m.amcfsurvey.com/article/201611/322898.htm

SysTick定时器被捆绑在NVIC中,用于产生SysTick异常(异常号:15)。主要应用于操作系统,作为“嘀嗒中断”维持操作系统“心跳”的节律。当然,SysTick定时器除了能服务于操作系统之外,还能用于其它目的:如作为一个闹铃,用于测量时间等。要注意的是,当处理器在调试期间被喊停(halt)时,则SysTick定时器亦将暂停运作。

1.SysTick寄存器:

寄存器

说明

地址

CTRL

SysTick控制和状态寄存器

0xE000E010

LOAD

Systick重装值寄存器

0xE000E014

VAL

Systick当前值寄存器

0xE000E018

CALIB

SysTick校准值寄存器

0xE000E01C

lSysTick控制和状态寄存器(SysTick_CTRL)

说明:

CLKSOURCE位:CM3允许为SysTick提供两个时钟源以供选择。第一个是内核的“自由运行时钟”FCLK。“自由”表现在它不来自系统时钟HCLK,因此在系统时钟停止时FCLK也继续运行。第二个是一个外部的参考时钟。但是使用外部时钟时,因为它在内部是通过FCLK来采样的,因此其周期必须至少是FCLK的两倍(采样定理)。很多情况下芯片厂商都会忽略此外部参考时钟,因此通常不可用。

COUNTFLAG位:当SysTick定时器从1计到0时,它将把COUNTFLAG位置位;而下述方法可以清零之:

读取SysTick控制及状态寄存器(STCSR);

往SysTick当前值寄存器(STCVR)中写任何数据。

lSysTick重装值寄存器(SysTick_LOAD)


说明:

当计数器倒数至0时,使用SysTick_LOAD寄存器来指定载入“当前值寄存器”的初始值。初始值可以是1到0x00FFFFFF之间的任何值。


上一页 1 2 3 下一页

关键词:STM32SysTick定时

评论


技术专区

关闭