MCUXpresso_MIMXRT1052xxxxB/middleware/mcu_bootloader/apps/led_demo/src/milliseconds_delay.c
Yilin Sun 75f32185d2
Updated to v2.14.0
Signed-off-by: Yilin Sun <imi415@imi.moe>
2023-11-30 20:55:00 +08:00

55 lines
1.1 KiB
C

/*
* Copyright (c) 2013 Freescale Semiconductor, Inc.
* All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
#include "fsl_device_registers.h"
#include "milliseconds_delay.h"
////////////////////////////////////////////////////////////////////////////////
// Code
////////////////////////////////////////////////////////////////////////////////
static volatile uint32_t s_milliseconds_left = 0;
static inline uint32_t milliseconds_left_get(void)
{
return s_milliseconds_left;
}
static inline void milliseconds_left_set(uint32_t ms)
{
s_milliseconds_left = ms;
}
static inline void milliseconds_left_decrement(void)
{
--s_milliseconds_left;
}
void milliseconds_delay_init(void)
{
SysTick_Config(SystemCoreClock >> 10);
}
void milliseconds_delay(uint32_t ms)
{
milliseconds_left_set(ms);
while (milliseconds_left_get())
;
}
void SysTick_Handler(void)
{
if (milliseconds_left_get())
{
milliseconds_left_decrement();
}
}
////////////////////////////////////////////////////////////////////////////////
// EOF
////////////////////////////////////////////////////////////////////////////////