/**********************************************************************************
 * 文件名  :SysTick.c
 * 描述    :SysTick 系统滴答时钟10us中断函数库,中断时间可自由配置,
 *           常用的有 1us 10us 1ms 中断。         
 * 库版本  :ST3.5.0
 **********************************************************************************/
#include "SysTick.h"
static __IO u32 TimingDelay;
/*---------------------------------------------------------------------
 * 启动系统滴答定时器 SysTick
 */
void SysTick_Init(void)
{
	/* SystemFrequency / 1000    1ms中断一次
	 * SystemFrequency / 100000	 10us中断一次
	 * SystemFrequency / 1000000 1us中断一次
	 */
//	if (SysTick_Config(SystemFrequency / 100000))	// ST3.0.0库版本
	if (SysTick_Config(SystemCoreClock / 1000000))	// ST3.5.0库版本
	{ 
		/* Capture error */ 
		while (1);
	}
		/* 关闭滴答定时器 */ 
	SysTick->CTRL &= ~ SysTick_CTRL_ENABLE_Msk;
}
/*---------------------------------------------------------------------
 * us延时程序,10us为一个单位
 * Delay_us( 1 ) 实现的延时为 1 * 10us = 10us
 */
void delay(__IO u32 nTime)
{ 
	TimingDelay = nTime;	
	/* 使能滴答定时器 */ 
	SysTick->CTRL |=  SysTick_CTRL_ENABLE_Msk;
	while(TimingDelay != 0);
}
/*---------------------------------------------------------------------
 * 获取节拍程序
 * 在 SysTick 中断函数 SysTick_Handler()调用
 */
void TimingDelay_Decrement(void)
{
	if (TimingDelay != 0x00)
	{ 
	   TimingDelay--;
	}
}
/*********************************************************************************/	
原文:http://www.cnblogs.com/BlogsOfLei/p/5768293.html