Do AVR delay functions (_delay_us() and _delay_ms()) use timers? I'm trying to determine if the AVR delay functions _delay_us() and _delay_ms() use timers in such a way that I can't use those timers for other functionality in my code. If so, what timer does it use?

For reference I'm using an Arduino Uno with ATmega328, but I imagine if it's an AVR function it must work similarly on other devices.
No, these macros expand to calls to __builtin_avr_delay_cycles(),
which are compiled into delay loops. It should be noted that:


the arguments to these macros should be compile-time constants, they
can be floating point
the macros are cycle-accurate, e.g. _delay_us(0.125) will take
exactly two CPU cycles on an Uno
whereas the CPU time used by the call is exactly what you ask for,
the physical time will be larger if the call gets interrupted.