Реализация задержек на SysTick

delay_systick.h
void SysTick_Handler (void);

void Delay_Ms (uint32_t millis);
void Delay_Us (uint32_t micros);

delay_systick.c
#include <delay_systick.h>

static volatile uint32_t systick_counter = 0;

void SysTick_Handler (void){

    if (systick_counter) systick_counter--;

}

void Delay_Ms (uint32_t millis){
    systick_counter = millis;
    SysTick_Config(CPU_CLK/1000);
    while(systick_counter);
}

void Delay_Us (uint32_t micros){
    systick_counter = micros;
    SysTick_Config(CPU_CLK/1000000);
    while(systick_counter);
}


Изменено: