STM32L151 NB-IoT and FreeRTOS Project
guowenxue
2018-11-05 d774f40a8d826bd9ce059e0ee6bfe8267aacf247
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
/****************************************************************************
*   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);
}