systick的原理前一篇博文有介绍,简而言之就是
SysTick定时器是一个24位的倒计数,当倒计数为0时,将从RELOAD寄存器中取值作为定时器的初始值,同时可以选择在这个时候产生中断(异常号:15)。
例如从RELOAD的值为999,那么当倒计数为0时,就会从复位为999继续倒计数。
库文件当中有systick的专用库函数的,这里暂时不用到。
在keil工程当中,新建systick.c,systick.h文件,

#ifndef __SYSTICK_H
#define __SYSTICK_H

#include "stm32f10x.h"

void RCC_Configuration(void);
void Delay_SYSTICK(__IO uint32_t nTime);

#endif /* __SYSTICK_H */

#include "SYSTICK.h"

static __IO uint32_t TimingDelay;

/****************************************************************************
* 名 称:void TimingDelay_Decrement(void)
* 功 能:获取节拍程序
* 入口参数:无
* 出口参数:无
* 说 明:此函数在stm32f10x_it.c文件调用
* 调用方法:无
****************************************************************************/
void TimingDelay_Decrement(void)
{
if (TimingDelay != 0x00)
{
TimingDelay--;
}
}

/****************************************************************************
* 名 称:void Delay(__IO uint32_t nTime)
* 功 能:定时延时程序 1ms为单位
* 入口参数:无
* 出口参数:无
* 说 明:
* 调用方法:无
****************************************************************************/
void Delay_SYSTICK(__IO uint32_t nTime)
{
TimingDelay = nTime;
while(TimingDelay != 0);
}

***注意在CC++的目录中添加相应的头文件目录。

在stm32f10x_it.c文件中添加如下声明:extern void TimingDelay_Decrement(void);
同时更新如下函数为:
void SysTick_Handler(void)
{
TimingDelay_Decrement();
}

在main函数中,
添加 //First to config the system clock
RCC_Configuration(); //系统时钟设置及各外设时钟使能

if (SysTick_Config(72000)) //时钟节拍中断时1ms一次 用于定时
{
/* Capture error */
while (1);
}
让clock运行起来,同时,开启systick定时器,其时钟可以是HCLK的8分频或是HCLK,SysTick_Config函数默认是选用HCLK时钟的,72000/72000000 = 1/1000 = 1ms。
之后就可以调用Delay_SYSTICK(500)来延时500ms。而且不占用cpu,比for(;;)循环高效多了。

systick运用的更多相关文章

  1. STM32F10xxx 之 System tick Timer(SYSTICK Timer)

    背景 研究STM32F10xxx定时器的时候,无意间看到了System tick Timer,于是比较深入的了解下,在此做个记录. 正文 System tick Timer是Cotex-M内核的24位 ...

  2. STM32学习及应用笔记一:SysTick定时器学习及应用

    这几年一直使用STM32的MCU,对ARM内核的SysTick计时器也经常使用,但几乎没有仔细了解过.最近正好要在移植一个新的操作系统时接触到了这块,据比较深入的了解了一下. 1.SysTick究竟是 ...

  3. SYSTick 定时器

        CM3 内核的处理器,内部包含了一个 SysTick 定时器,(SysTick 的时钟源自 HCLK 的 8 分频,8个系统时钟周期systick跳一个,即8*1/72M=1/9 us)Sys ...

  4. 用SysTick做的延时计时器

    CM3.CM4的内核中都有个24位的SysTick定时器.这两个MCU里边的SysTick大同小异.SysTick的介绍可以参考:(来自CSDN博客的参考)或者(来自百度文库的参考)或者参考<C ...

  5. STM32学习笔记(六) SysTick系统时钟滴答实验(stm32中断入门)

    系统时钟滴答实验很不难,我就在面简单说下,但其中涉及到了STM32最复杂也是以后用途最广的外设-NVIC,如果说RCC是实时性所必须考虑的部分,那么NVIC就是stm32功能性实现的基础,NVIC的难 ...

  6. [stm32] Systick

    (一) 背景介绍在传统的嵌入式系统软件按中通常实现 Delay(N) 函数的方法为:for(i=0;i<=x;i++); x--:            对应于N毫秒的循环值对于STM32系列微 ...

  7. SysTick 定时器的使用

    SysTick是STM32中的一个24位的定时器. Cortex‐M3处理器内部包含了一个简单的定时器.因为所有的CM3芯片都带有这个定时器,软件在不同 CM3器件间的移植工作得以化简.该定时器的时钟 ...

  8. STM32学习笔记:系统时钟和SysTick定时器

    原文:http://blog.sina.com.cn/s/blog_49cb42490100s60d.html 1.     STM32的时钟系统 在STM32中,一共有5个时钟源,分别是HSI.HS ...

  9. systick优先级的理解

    sysTick系统嘀嗒定时器并非STM32独有的,它是Cortex内核的部分,CM3为它专门开出一个异常类型,并且在中断向量表中占有一席之地(异常号15).这样它可以很方便的移植到不同厂商出CM3内核 ...

  10. Keil RTX systick 初始化

    在STM32F215上移植Keil的RTX操作系统,随便设置下就能好使,但是当我想知道systick到底是怎么设置的时候,就得翻翻代码了,原来在 rt_HAL_CM.h中以一个内联函数的形式定义的 _ ...

随机推荐

  1. PHP的Undefined variable错误怎么解决?

    在调试程序时,有可能会出现Undefined variable错误,一般情况下php是不需要定义变量的,但如果服务器什么都报错的,就会出现错误,我们经常接收表单POST过来的数据时报Undefined ...

  2. js 限制文本框不能输入单引号

    <input onkeydown="if(event.keyCode==32||event.keyCode==188||event.keyCode==222){return false ...

  3. C 碎片四 流程控制

    前面介绍了程序中用到的一些基本要素(常量,变量,运算符,表达式),他们是构成程序的基本成分,下面将介绍C语言中流程控制的三种结构:顺序结构.分支结构.循环结构 一.顺序结构 顺序结构的程序设计是最简单 ...

  4. 基于android-uitableview扩展-uilistview项目

    这个项目是正如标题说的那样,是基于uitableview项目为基础进行二次封装的,目的是实现更多的展现形式,项目地址:点击打开 不过,这个使用起来你还必须得会用uitableview扩展(项目地址:点 ...

  5. linux系统的安全小知识

    最近安装linux虚拟机,出了几个小问题:1. 只有root用户  2.ftp连接不上  3.ssh连接虚拟机如何免密 1.创建用户 useradd –d /usr/sam -m sam    创建用 ...

  6. hibernate课程 初探单表映射1-2 ORM定义

    1 什么是ORM? ORM(Object / RelationShip Mapping) 对象/关系映射 面向对象编程(OOP)最终要把对象信息保存在关系性数据库中,要写好多sql语句.这与面向对象编 ...

  7. websocket的加密和解密

    补充个小知识点:按位与运算 按位与运算是同位都为1才为1,有一个不为1就是0 websocket_hand import socket, base64, hashlib import websocke ...

  8. window.open()方法详解

    , 最基本的弹出窗口代码   window.open('page.html'); 2, 经过设置后的弹出窗口   window.open('page.html', 'newwindow', 'heig ...

  9. vue-resource的使用

    之前使用axios post请求不能向后台发送数据,然后使用了vue-resource这个插件 import  Vue from 'vue' import VueResource from 'vue- ...

  10. Android 浮动按钮的伸缩效果

    在做项目时想增加点动感,于是就有如下效果: 实现起来也很简单,通过属性动画和recyclerview 滑动结合就很好实现了. 通过给recycleview添加一个滑动监听:通过滚动的差值来处理动画 m ...