uint32_t getTicks(void)
{
uint32_t res;
do
{
res = sec;
} while (res != sec);
return res;
}
Не надо заниматься преждевременной оптимизацией. Надо писать простые и понятные программы.
Самый же правильный способ - запретить прерывания. Длительность состояния с запрещенными прерываниями для копирования одного длинного числа пренебрежимо мала.