//-----------------------------------------------------------------------------
#include <stdio.h>
#include <inttypes.h>
//-----------------------------------------------------------------------------
#define __IO
static uint32_t Ticks;
/// Debug version of HAL_GetTick()
static uint32_t HAL_GetTick()
{
return Ticks++;
}
//-----------------------------------------------------------------------------
#if 1
/// Original HAL_Delay() from CubeMX
void HAL_Delay(__IO uint32_t Delay)
{
uint32_t timingdelay;
timingdelay = HAL_GetTick() + Delay;
while(HAL_GetTick() < timingdelay)
{
}
}
#else
/// Proposed HAL_Delay()
void HAL_Delay(__IO uint32_t Delay)
{
uint32_t tt = HAL_GetTick();
while((uint32_t)(HAL_GetTick() - tt) < Delay)
{
}
}
#endif
//-----------------------------------------------------------------------------
int main(int argv, char * argc[])
{
uint32_t temp;
Ticks = 0xFFFFFFE0;
temp = Ticks;
HAL_Delay(10);
printf("%" PRIu32
"\n", (uint32_t)(Ticks
- temp
));
temp = Ticks;
HAL_Delay(10);
printf("%" PRIu32
"\n", (uint32_t)(Ticks
- temp
));
temp = Ticks;
HAL_Delay(10);
printf("%" PRIu32
"\n", (uint32_t)(Ticks
- temp
));
temp = Ticks;
HAL_Delay(10);
printf("%" PRIu32
"\n", (uint32_t)(Ticks
- temp
));
temp = Ticks;
HAL_Delay(10);
printf("%" PRIu32
"\n", (uint32_t)(Ticks
- temp
));
temp = Ticks;
HAL_Delay(10);
printf("%" PRIu32
"\n", (uint32_t)(Ticks
- temp
));
temp = Ticks;
HAL_Delay(10);
printf("%" PRIu32
"\n", (uint32_t)(Ticks
- temp
));
temp = Ticks;
HAL_Delay(10);
printf("%" PRIu32
"\n", (uint32_t)(Ticks
- temp
));
temp = Ticks;
HAL_Delay(10);
printf("%" PRIu32
"\n", (uint32_t)(Ticks
- temp
));
return 0;
}
Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojaW5jbHVkZSA8c3RkaW8uaD4KI2luY2x1ZGUgPGludHR5cGVzLmg+Ci8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiNkZWZpbmUgX19JTwoKc3RhdGljIHVpbnQzMl90IFRpY2tzOwoKLy8vIERlYnVnIHZlcnNpb24gb2YgSEFMX0dldFRpY2soKQpzdGF0aWMgdWludDMyX3QgSEFMX0dldFRpY2soKQp7CglyZXR1cm4gVGlja3MrKzsKfQoKLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKI2lmIDEKCi8vLyBPcmlnaW5hbCBIQUxfRGVsYXkoKSBmcm9tIEN1YmVNWAp2b2lkIEhBTF9EZWxheShfX0lPIHVpbnQzMl90IERlbGF5KQp7CiAgdWludDMyX3QgdGltaW5nZGVsYXk7CiAgCiAgdGltaW5nZGVsYXkgPSBIQUxfR2V0VGljaygpICsgRGVsYXk7CiAgd2hpbGUoSEFMX0dldFRpY2soKSA8IHRpbWluZ2RlbGF5KQogIHsKICB9Cn0KCiNlbHNlCgovLy8gUHJvcG9zZWQgSEFMX0RlbGF5KCkKdm9pZCBIQUxfRGVsYXkoX19JTyB1aW50MzJfdCBEZWxheSkKewogIHVpbnQzMl90IHR0ID0gSEFMX0dldFRpY2soKTsKICAKICB3aGlsZSgodWludDMyX3QpKEhBTF9HZXRUaWNrKCkgLSB0dCkgPCBEZWxheSkKICB7CiAgfQp9CgojZW5kaWYKCi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCmludCBtYWluKGludCBhcmd2LCBjaGFyICogYXJnY1tdKQp7Cgl1aW50MzJfdCB0ZW1wOwoJCglUaWNrcyA9IDB4RkZGRkZGRTA7CgkKCXRlbXAgPSBUaWNrczsKCUhBTF9EZWxheSgxMCk7CglwcmludGYoIiUiIFBSSXUzMiAiXG4iLCAodWludDMyX3QpKFRpY2tzIC0gdGVtcCkpOwoJCgl0ZW1wID0gVGlja3M7CglIQUxfRGVsYXkoMTApOwoJcHJpbnRmKCIlIiBQUkl1MzIgIlxuIiwgKHVpbnQzMl90KShUaWNrcyAtIHRlbXApKTsKCgl0ZW1wID0gVGlja3M7CglIQUxfRGVsYXkoMTApOwoJcHJpbnRmKCIlIiBQUkl1MzIgIlxuIiwgKHVpbnQzMl90KShUaWNrcyAtIHRlbXApKTsKCgl0ZW1wID0gVGlja3M7CglIQUxfRGVsYXkoMTApOwoJcHJpbnRmKCIlIiBQUkl1MzIgIlxuIiwgKHVpbnQzMl90KShUaWNrcyAtIHRlbXApKTsKCgl0ZW1wID0gVGlja3M7CglIQUxfRGVsYXkoMTApOwoJcHJpbnRmKCIlIiBQUkl1MzIgIlxuIiwgKHVpbnQzMl90KShUaWNrcyAtIHRlbXApKTsKCgl0ZW1wID0gVGlja3M7CglIQUxfRGVsYXkoMTApOwoJcHJpbnRmKCIlIiBQUkl1MzIgIlxuIiwgKHVpbnQzMl90KShUaWNrcyAtIHRlbXApKTsKCgl0ZW1wID0gVGlja3M7CglIQUxfRGVsYXkoMTApOwoJcHJpbnRmKCIlIiBQUkl1MzIgIlxuIiwgKHVpbnQzMl90KShUaWNrcyAtIHRlbXApKTsKCgl0ZW1wID0gVGlja3M7CglIQUxfRGVsYXkoMTApOwoJcHJpbnRmKCIlIiBQUkl1MzIgIlxuIiwgKHVpbnQzMl90KShUaWNrcyAtIHRlbXApKTsKCgl0ZW1wID0gVGlja3M7CglIQUxfRGVsYXkoMTApOwoJcHJpbnRmKCIlIiBQUkl1MzIgIlxuIiwgKHVpbnQzMl90KShUaWNrcyAtIHRlbXApKTsKCglyZXR1cm4gMDsKfQoK