/****************************************************************************
|
* Copyright: (C)2018 Î人ÁèÔÆÎïÍøÖÇ¿ÆÊµÑéÊÒ www.iot-yun.com
|
* Author: GuoWenxue<guowenxue@gmail.com> QQ: 281143292
|
* Description: STM32L151C8T6 CubeMX ¿ª·¢°å systick ÑÓʱº¯Êý¡¢jiffiesʵÏÖº¯Êý
|
*
|
* ChangeLog:
|
* °æ±¾ºÅ ÈÕÆÚ ×÷Õß ËµÃ÷
|
* V1.0.0 2018.11.05 GuoWenxue ·¢²¼¸Ã°æ±¾
|
****************************************************************************/
|
|
#include "stm32l1xx.h"
|
#include "stm32_systick.h"
|
|
static __IO uint32_t s_delay_ms;
|
__IO uint32_t jiffies;
|
|
|
/* ³õʼ»¯Systick, ÿ¸ô 1ms ²úÉúÒ»´ÎÖÐ¶Ï */
|
void init_systick(void)
|
{
|
/* Systick¶¨Ê±Æ÷»áÔÚÆäʱÖÓÊäÈëÿÀ´Ò»¸öʱÖÓÂö³åʱ×Ô¼õ1(¼´Ò»¸öϵͳµÎ´ð)£¬¶ø SystickÊǹÒÔÚAHB×ÜÏßÉϵģ¬
|
* Æä×ÜÏ߯µÂÊÓëϵͳºËÐÄÆµÂÊ(f=72MHz)Ò»ÖÂ. ÕâÑùSystickÉϵÄÒ»¸öµÎ´ðµÄʱ¼äÖÜÆÚ¾ÍÊÇ£º 1/f Ãë
|
*
|
* ÎÒÃÇ¿ÉÒÔͨ¹ý SysTick_Config()º¯ÊýÀ´ÅäÖÃsystickÿ¾¹ý¶àÉÙ¸öticks²úÉúÒ»´ÎÖжϣ¬ÖжϲúÉúºóÓ²¼þ½«×Ô¶¯ÖØÐ¼ÓÔØ²¢ÖØÐ¿ªÊ¼¼ÇÊý£»
|
* ¼ÙÉèticks¸öʱÖÓÂö³åÊÇ 1ms :
|
* 1Ãë = f ¸öticks => 1ms = f/1000 = SystemCoreClock/1000
|
* => 1us = f/1000000 = SystemCoreClock/1000000
|
*/
|
if( SysTick_Config( SystemCoreClock/TICKS_PER_MSECOND ) )
|
{
|
while(1);
|
}
|
}
|
|
/* SystickÖжϴ¦Àíº¯Êý SysTick_Handler (stm32f10x_it.c) »áµ÷Óøú¯Êý */
|
void systick_handler_proc(void)
|
{
|
jiffies++;
|
if (s_delay_ms != 0x00)
|
{
|
s_delay_ms--;
|
}
|
}
|
|
|
/* sleep msºÁÃë */
|
void msleep(__IO uint32_t ms)
|
{
|
s_delay_ms = ms;
|
|
while( s_delay_ms != 0);
|
}
|