История изменений
Исправление alexru, (текущая версия) :
Пропустил. Это херня полная.
Если что, нормальный код для задержек:
__attribute__((noinline, section(".ramfunc")))
static void delay_ms(int ms)
{
uint32_t cycles = ms * F_CPU / 3 / 1000;
asm volatile (
"1: subs %[cycles], %[cycles], #1 \n"
" bne 1b \n"
: [cycles] "+r"(cycles)
);
}
__attribute__((noinline, section(".ramfunc")))
void delay_cycles(uint32_t cycles)
{
cycles /= 4;
asm volatile (
"1: subs %[cycles], %[cycles], #1 \n"
" nop \n"
" bne 1b \n"
: [cycles] "+l"(cycles)
);
}
Исходная версия alexru, :
Пропустил. Это херня полная.
Если что, нормальный код для задержек:
__attribute__((noinline, section(".ramfunc")))
static void delay_ms(int ms)
{
uint32_t cycles = ms * F_CPU / 3 / 1000;
asm volatile (
"1: sub %[cycles], %[cycles], #1 \n"
" bne 1b \n"
: [cycles] "+r"(cycles)
);
}
__attribute__((noinline, section(".ramfunc")))
void delay_cycles(uint32_t cycles)
{
cycles /= 4;
asm volatile (
"1: subs %[cycles], %[cycles], #1 \n"
" nop \n"
" bne 1b \n"
: [cycles] "+l"(cycles)
);
}