/****************************************************************************
|
* Copyright: (C)2014 Î人ÁèÔÆÇ¶ÈëʽʵÑéÊÒ www.emblinux.com
|
* Author: GuoWenxue<guowenxue@gmail.com> QQ: 281143292
|
* Description: ·Ü¶·STM32v5¿ª·¢°åsystickºÍÑÓʱÏà¹Øº¯Êý£»
|
*
|
* ChangeLog:
|
* °æ±¾ºÅ ÈÕÆÚ ×÷Õß ËµÃ÷
|
* V1.0.0 2014.08.25 GuoWenxue ·¢²¼¸Ã°æ±¾
|
****************************************************************************/
|
#include "stm32f10x.h"
|
#include "stm32v5_systick.h"
|
|
static __IO uint32_t s_delay_clocks;
|
|
/*
|
SysTick_Config½«»á´ÓAHB×ÜÏß»ñȡʱÖÓ£¬¶øAHB×ÜÏßÓëϵͳºËÐÄʱÖÓÒ»ÖÂΪ72MHz.Ëü
|
µÄÊäÈë²ÎÊýΪSystick½«Òª¼ÆÊ±µÄÂö³åÊý£¬¾¹ýticks¸öÂö³åºó½«´¥·¢Öжϣ¬Öжϴ¦Àí
|
³ÌÐòÖн«ÖØÐ¼¼Êõ¡£ÓÉ´ËÎÒÃÇ¿ÉÒÔ¼ÆËã³ö¶¨Ê±µÄʱ¼ä£¬ÏÂÃæÎª¼ÆË㹫ʽ£º
|
T=ticks*(1/f) TΪҪ¶¨Ê±µÄ×Üʱ¼ä; ticksΪSysTick_Config()µÄÊäÈë²ÎÊý;1/f¼´Îª
|
SysTickʹÓõÄʱÖÓÔ´µÄʱÖÓÖÜÆÚ£¬fΪ¸ÃʱÖÓÔ´µÄʱÖÓÆµÂÊ£¬Îª72MHz.
|
ÔÚÏÂÃæµÄ³ÌÐòÖÐ, SystemCoreClock¼´ÎªÏµÍ³Ê±ÖÓ(f),ÕâÑù£º
|
T= (f/CLOCK_SECOND) * (1*f) = 1/CLOCK_SECOND
|
ËùÒÔ£¬Èç¹ûÎÒÃÇÐèÒª1ms¶¨Ê±£¬Ö»ÐèÒª½«CLOCK_SECOND¶¨ÒåΪ1000;
|
Èç¹ûÎÒÃÇÐèÒª1us¶¨Ê±£¬Ö»ÐèÒª½«CLOCK_SECOND¶¨ÒåΪ1000000;
|
*/
|
void sysclock_init(void)
|
{
|
if (SysTick_Config(SystemCoreClock / CLOCK_CONF_SECOND))
|
{
|
while(1);
|
}
|
}
|
|
void sysclock_decrement(void)
|
{
|
if (s_delay_clocks != 0x00)
|
{
|
s_delay_clocks--;
|
}
|
}
|
|
void msleep(__IO uint32_t ms)
|
{
|
s_delay_clocks = ms;
|
|
while(s_delay_clocks != 0);
|
}
|