Как вы используете эту формулу для установки вывода GPIO на вывод (сборка ARM)? - PullRequest
0 голосов
/ 01 мая 2018

Так что, в основном, ребята, я собираюсь вырвать мои волосы, я не могу понять, как с этим справиться. Мне дали это ( gpio_addr + (4*( GPIO_NR/10))) |= (1<<(((GPIO_NR)%10)*3)

gpio_address в моем случае - это виртуальный базовый адрес, который равен 0x3F200000, а первое число GPIO равно 17. Что я не понимаю, как вы можете разделить 17 на 10 и умножить его на 4, не теряя оставшиеся 7?

Большое спасибо, ребята

1 Ответ

0 голосов
/ 01 мая 2018

Это очень просто. Ваш микро имеет два 32-битных регистра для него. Каждый пин-код gpio имеет свои 3 бита. Первые десять находятся в первом регистре, еще 8 во втором. Когда вы делите целое число на десять и умножаете на 4, вы получаете адрес регистра. Несколько по модулю 3 дает вам позицию в реестре. Простая математика.

...