码迷,mamicode.com
首页 > 其他好文 > 详细

SysTick 延时函数

时间:2015-01-13 19:41:35      阅读:185      评论:0      收藏:0      [点我收藏+]

标签:

用SYSTICK(系统滴答定时器)做延时函数

1.   4个寄存器

   SysTick->CTRL,        --控制和状态寄存器

    SysTick->LOAD,        --重装载寄存器

    SysTick->VAL,          --当前值寄存器

    SysTick->CALIB,        --校准值寄存器    

下图有他们的分别描述:     下图引用地址:http://blog.csdn.net/marike1314/article/details/5673684

技术分享

技术分享

技术分享

技术分享

2.systick编程

设置时钟源(一种是直接等于HCLK时钟,一种是HCLK/8)

 内核时钟      SysTick->CTRL |= SysTick_CLKSource_HCLK;         //0x00000004

外部时钟源    SysTick->CTRL &= SysTick_CLKSource_HCLK_Div8;//0xFFFFFFFB

 

如果HCLK时钟为8M

void delay_1us(u16 value)
{
//设置SYSTICK 时钟源 HCLK=8M

SysTick->LOAD=value*8; //时间加载 时间为8M 8次为1us

SysTick->VAL=0x00; //清空计数器
SysTick->CTRL=0x00000005; //设置时钟源为HCLK(8M)并开始倒数0x00000004|0x01
while(!(SysTick->CTRL&(1<<16))); //等待时间到达 SysTick->CTRL的COUNTFLAG为为1时时间到达  (while表达式为1会一直循环,为0时跳出循环)
SysTick->CTRL=0x00000004; //关闭计数器
}

SysTick 延时函数

标签:

原文地址:http://www.cnblogs.com/child123/p/4222203.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!