LINUX.ORG.RU

История изменений

Исправление COKPOWEHEU, (текущая версия) :

И ещё не советую использовать bit-banding, он далеко не во всех семействах есть.

Да все советуют, только плевал он на советы.

mov r4, #0
mov r5, #1

Я плохо знаю местный ассемблер, но в нем должны быть псевдонимы для регистров. Да даже если нет, через define можно

#define zero r4
#define one r5
mov zero, #0
mov one, #1

Ну и дальше уже использовать их

str r4, [r3, #0]     // #0 в 20й бит
str r5, [r3, #4]     // #1 в 21й бит
str r4, [r3, #8]     // #0 в 22й бит
str r4, [r3, #12]    // #0 в 23й бит

А вот здесь надо следить чтобы все промежуточные значения были валидными. Именно для светодиода это вряд ли важно, но в общем случае - да. Ну и еще один камень в сторону битбанда: человеческим способом 4 бита выставляются одной операцией записи, а не четырьмя.

Исходная версия COKPOWEHEU, :

И ещё не советую использовать bit-banding, он далеко не во всех семействах есть.

Да все советуют, только плевал он на советы.

mov r5, #1```

Я плохо знаю местный ассемблер, но в нем должны быть псевдонимы для регистров. Да даже если нет, через define можно

#define one r5
mov zero, #0
mov one, #1

Ну и дальше уже использовать их

str r5, [r3, #4]     // #1 в 21й бит
str r4, [r3, #8]     // #0 в 22й бит
str r4, [r3, #12]    // #0 в 23й бит

А вот здесь надо следить чтобы все промежуточные значения были валидными. Именно для светодиода это вряд ли важно, но в общем случае - да. Ну и еще один камень в сторону битбанда: человеческим способом 4 бита выставляются одной операцией записи, а не четырьмя.