Я работаю над проектом сборки Raspberry Pi с некоторыми светодиодами и кнопкой ввода.На данный момент у меня есть мигающий светодиод и кнопка для включения другого светодиода.Теперь я хочу установить еще один светодиод, и я застрял на чем-то, что делаю неправильно или не совсем понимаю.
Так что, если у меня более одного светодиода в одном GPFSEL, мне нужно их установитьв одной строке кода, чтобы они не перезаписывали друг друга.Например:
Порт 21 GPIO - это FSEL21 = Бит 5 - 3
Порт 27 GPIO - это FSEL27 = Бит 23 - 21
Чтобы установить их на Выход, мне нужно установитьмладший значащий бит в 1. Это: 0x08 и 0x200000 в шестнадцатеричном формате.
Если я делаю это в двух строках кода, например:
ldr register,=0x08
str register,[base,#GPFSEL2]
ldr register,=0x200000
str register,[base,#GPFSEL2]
Это не работает.
Итак, я сделал это в одной строке кода, и это сработало:
ldr register,=0x200008
str register,[base,#GPFSEL2]
Теперь у меня проблема в том, чтобы установить GPFSEL1, потому что он имеет один выход и один вход.Документальный фильм говорит, что я должен установить 000 для входа.
Итак, у меня есть:
GPIO Port 19 = Выход FSEL19 = Бит 29 - 27
GPIO Port 17 =Кнопка ввода - FSEL17 = бит 23-21
GPIO 19 = 0x8000000
GPIO Port 17, документальный фильм говорит, что я должен установить биты в 000. И учебник, который я читаю, устанавливаетмаска для 0xFF1FFFFF, которая в двоичном виде равна 11111111000111111111111111111111.
Теперь я не понимаю, как я не могу установить их вместе.И я должен установить вход?Разве это не должно быть 000, если я ничего не установлю?Я пытался ничего не устанавливать на входе, и он работал как вход, но мигающий светодиод стал очень медленным без каких-либо других изменений в коде.Я надеюсь, что вы можете сказать мне, как правильно установить эти биты.
Спасибо за вашу помощь!