/**************************************************************************** * Copyright: (C)2018 Î人ÁèÔÆÎïÍøÖÇ¿ÆÊµÑéÊÒ www.iot-yun.com * Author: GuoWenxue 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); }