#include "delay.h" static uint8_t p_us = 0; static uint16_t p_ms = 0; void delay_init(void) { p_us = SystemCoreClock / 8000000; p_ms = (uint16_t)p_us * 1000; } void delay_us(uint32_t n) { uint32_t i; SysTick->SR &= ~(1 << 0); i = (uint32_t)n * p_us; SysTick->CMP = i; SysTick->CTLR |= (1 << 4); SysTick->CTLR |= (1 << 5) | (1 << 0); while((SysTick->SR & (1 << 0)) != (1 << 0)) { } SysTick->CTLR &= ~(1 << 0); } void delay_ms(uint32_t n) { uint32_t i; SysTick->SR &= ~(1 << 0); i = (uint32_t)n * p_ms; SysTick->CMP = i; SysTick->CTLR |= (1 << 4); SysTick->CTLR |= (1 << 5) | (1 << 0); while((SysTick->SR & (1 << 0)) != (1 << 0)) { } SysTick->CTLR &= ~(1 << 0); }