Второй вариант лучше. Покажу свой, пхожий вариант
Код
void Delay_ms(const uint8_t pDelay)
{
for(uint8_t i = 0; i < pDelay; i++) Delay_1ms();
}
void Delay_1ms()
{
uint32_t startval = TIM_GetCounter(HWCONF_DELTIM_TIM);
do {} while((TIM_GetCounter(HWCONF_DELTIM_TIM) - startval) <= 1);
}
в случае ТС вместо значения счётчика использовать переменную.
зы. ПМСМ первый вариант бессмысленный, т.к. переменная глобальная.