一.SysTick概述

Systick定时器是一个24 位的倒计数定时器,计到0时,将从RELOAD 寄存器中自动重装载定时初值。只要不把它在SysTick 控制及状态寄存器中的使能位清除,就永不停息,即使在睡眠模式下也能工作。

Systick定时器一般用来做精确的延时,或者在实时系统中充当心跳时钟,这样就大大节省了定时器资源,不必浪费一个单独的定时器。

Systick定时器旳时钟来源可以是内核时钟FCLK或AHB总线时钟HCLK。

Systick定时器可以产生Systick中断,中断号为15。

使用步骤:

1.初始化

void SysTick_Init(void)

{

if(SysTick_Config(SystemCoreClock/100000))

{

while(1)

;

}

SysTick->CTRL&=~SysTick_CTRL_ENABLE_Msk;

}

函数描述:调用函数SysTick_Config(),相当于打开了系统滴答时钟和滴答中断,传入的参数的含义是产生一个滴答中断所经过的系统时钟周期数,函数返回值为0表示系统滴答时钟设置成功,返回值为1表示系统滴答时钟设置失败(以上函数中,若设置失败则进入死循环)。紧接着直接操作寄存器关闭系统滴答时钟,后面用到的时候再打开。

2.调用

下面以一个简单的延时函数为例解析一下系统滴答时钟的应用。

首先定义一个全局变量:

static __IO u32 TimingDelay;

延时函数如下:

void delay_us(__IO u32 nTime)

{

TimingDelay=nTime;

SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk;

while(TimingDelay!=0)

;

}

中断函数如下:

void TimingDelay_Decrement(void)

{

if(TimingDelay!=0x00)

{

TimingDelay--;

}

}

其中中断函数需要在文件stm32f10x_it.c的开头进行声明[extern void TimingDelay_Decrement(void);],并在文件stm32f10x_it.c的void SysTick_Handler(void)函数里面进行调用。

函数描述:每次调用延时函数,传入参数的值传给一个全局变量TimingDelay,并且延时函数将立即开启系统滴答时钟,在TimingDelay不等于0的情况下陷入死循环。与此同时,系统滴答时钟是由内核控制的,每产生一次滴答中断,内核便会自动执行中断函数,令TimingDelay减1,直至TimingDelay减为0,不再执行中断程序,也即刻跳出延时函数的死循环,回到原来调用延时函数的代码的下一行继续执行其它代码,从而实现了延时的功能。

二.寄存器概述

STK_CTRL

STK_VAL

STK_LOAD

滴答定时器的计数模式_SysTick(系统滴答定时器)相关推荐

  1. 滴答定时器的计数模式_系统滴答定时器

    STM32中的定时器: 内核:SysTick 的系统定时器 定时器的工作原理 如:想要:1ms的定时 时钟源: 72MHz 分频器:72分频 72MHz / 72= 1MHz 1/1M s = 1us ...

  2. 滴答定时器的计数模式_Cortex-M4 Systick滴答定时器

    Tickclock可以实现精确延时,在K60的datasheet中没有详细将,现在我把我找到资料分享一下,关于systick在Cortex-M4中有讲到我们大家平常在单片机开发中经常会使用到延时函数, ...

  3. 滴答定时器的计数模式_【高手私藏】STM32学习笔记:SysTick滴答时钟

    今天我们来说说SysTick定时器.SysTick定时器在从参考手册中根本没有介绍.我费了九牛二虎之力才在一个犄角格拉里找到SysTick定时器的英文版的说明.在Cotex-M3有介绍,为什么要找ST ...

  4. 滴答定时器的计数模式_MSP432滴答定时器(SysTick)说明和配置

    MSP432是 TI 的一款基于 arm cortex-M4 内核的 32 位低功耗处理器.低功耗表现十分优越.但是由于上市的时间较短,网上能查找到的相关资料是极其稀少的.所以作者想在此分享一些MSP ...

  5. STM32系统滴答定时器(systick)应用

    一:系统滴答定时器(systick) 1.systick介绍 Systick就是一个定时器而已,只是它放在了NVIC中,主要的目的是为了给操作系统提供一个硬件上的中断(号称滴答中断).滴答中断?这里来 ...

  6. STM32F10xxx20xxx21xxxL1xxxx Cortex-M3程序设计手册 阅读笔记四(5):系统滴答定时器

    处理器有一个24位系统定时器,SysTick,它可以向下计数从重载值到0,在下一个时钟边沿重载LOAD寄存器中的值,然后在随后的时钟下降计数. 当处理器停止进行调试时,计数值不再缩减. 系统滴答控制和 ...

  7. linux调度周期systick怎么看,Cortex-M0系统滴答定时器Systick详解

    上图是LPC1114系统滴答定时器(SysTick)的结构图.系统滴答定时器位于Cortex-M0内核中,也就是说,不论是LPC1114,还是其他的Cortex-M0内核单片机,都有这个系统定时器.其 ...

  8. stm32滴答计时器_STM32 的系统滴答定时器( Systick) 彻底研究解读

    作者:王健 前言 SysTick 比起那些 TIM 定时器可以说简单多啦~~~~~哥的心情也好了不少, 嘎嘎!! ARM Cortex-M3 内核的处理器内部包含了一个 SysTick 定时器,它是一 ...

  9. 定时器开始时延时了十几秒_第六章--系统滴答定时器

    第六章--系统滴答定时器 简介:系统滴答定时器是内核(这里指M4)定时器使用的是内核时钟源168MZ或可以选择外部时钟源21MZ 应用场合: 为UCOS系统提供时钟节拍 作为简单的定时器延时使用 // ...

最新文章

  1. Linux系统中FTP的配置(图文详解-全)
  2. 关于使用python的open函数时报No Such File or DIr的错误
  3. BootStrap网格布局
  4. c语言程序设计电大形考作业答案,2016年电大-电大c语言程序设计形成性考核册答案(-).doc...
  5. Linux下处理BOM头和^M的简单方法
  6. 零顶会进大厂算法岗的正确姿势(干货总结)
  7. WINDOWS补丁不装更好
  8. python交互式换行_如何在Python中进行换行(换行)?
  9. C/C++编程:log4cpp使用学习
  10. 诺顿5月17日病毒库更新后误杀系统文件导致系统蓝屏(STOP c000021a Unkown hard error)
  11. lldp协议代码阅读_LLDP(lldp协议平时开启还是关闭)
  12. WINDOWS安装.cab文件
  13. Pocket PC、Pocket PC phone、Smartphone的区别
  14. RS-232实现双机通信
  15. 量化交易软件该怎么选择
  16. 学生党必备读书笔记app推荐
  17. 12864液晶显示出十进制数据
  18. 替代DRV8825的打印机/扫描仪驱动芯片TMI8420
  19. HTML期末学生大作业 响应式动漫网页作业 html+css+javascript
  20. R语言学习笔记(二) 逻辑运算符

热门文章

  1. 给Java初学者福利——Java语法基础
  2. CSS设计指南(读书笔记 - 选择器)
  3. Http权威指南学习研究
  4. 不可不知的Python模块: collections
  5. Android中Activity的启动流程和组织管理方式(Backstack、Task)
  6. 网络主机监控-nagios应用漫谈(三)
  7. golang 切片copy复制 和 等号复制 区别
  8. docker可视化管理工具对比 DockerUI Shipyard Rancher Portainer
  9. python3 requests 不进行编码 直接发送的方法
  10. password is not set 问题解决