48 lines
805 B
C
48 lines
805 B
C
#include "delay.h"
|
|
|
|
void delay_us(__IO uint32_t delay)
|
|
{
|
|
int last, curr, val;
|
|
int temp;
|
|
|
|
while (delay != 0)
|
|
{
|
|
temp = delay > 900 ? 900 : delay;
|
|
last = SysTick->VAL;
|
|
curr = last - CPU_FREQUENCY_MHZ * temp;
|
|
if (curr >= 0)
|
|
{
|
|
do
|
|
{
|
|
val = SysTick->VAL;
|
|
}
|
|
while ((val < last) && (val >= curr));
|
|
}
|
|
else
|
|
{
|
|
curr += CPU_FREQUENCY_MHZ * 1000;
|
|
do
|
|
{
|
|
val = SysTick->VAL;
|
|
}
|
|
while ((val <= last) || (val > curr));
|
|
}
|
|
delay -= temp;
|
|
}
|
|
}
|
|
|
|
void delay_ms(__IO uint32_t delay)
|
|
{
|
|
HAL_Delay(delay);
|
|
}
|
|
|
|
void delay_tick(uint32_t ticks)
|
|
{
|
|
while (ticks--)
|
|
{
|
|
__NOP();
|
|
}
|
|
}
|
|
|
|
|