delay.c 2.05 KB
Newer Older
李俭双's avatar
李俭双 committed
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 53 54 55
#include <stdio.h> 
#include "delay.h"

static  uint8_t  Value_us =0;

/***********************************************************************************************************************
* Function Name: delay1_us
* @brief  Configure one millisecond count
* @param  num: systemclock divided coefficient
* @return   
***********************************************************************************************************************/
void delay1_us(uint32_t num)
{            
	SysTick->LOAD = num * Value_us;
	SysTick->VAL = 0x00;
	SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk |
                    SysTick_CTRL_ENABLE_Msk;                         /* Enable SysTick IRQ and SysTick Timer */
	while(!(SysTick->CTRL&SysTick_CTRL_COUNTFLAG_Msk));
	SysTick->CTRL= SysTick_CTRL_CLKSOURCE_Msk;     
}

/***********************************************************************************************************************
* Function Name: m0_delay_ms
* @brief  Configure second count
* @param  number_of_ms
* @return   
***********************************************************************************************************************/
void m0_delay_ms(uint32_t volatile number_of_ms)
{
    while(number_of_ms != 0)
    {
        number_of_ms--;
        delay1_us(1000);
    }
}

/***********************************************************************************************************************
* Function Name: m0_delay_us
* @brief  Configure millisecond count
* @param  number_of_ms
* @return   
***********************************************************************************************************************/
void m0_delay_us(uint32_t volatile number_of_us)
{
	delay1_us(number_of_us);
}

/***********************************************************************************************************************
* Function Name: delay_init
* @brief  
* @param  SYSCLK
* @return   
***********************************************************************************************************************/
void delay_init(uint32_t sysclk)
{
56
	Value_us = (uint8_t)(sysclk/1000000);
李俭双's avatar
李俭双 committed
57
}