Вступить в клуб →
лёгкаявопросМикроконтроллеры и аппаратные протоколы

Записали конфигурацию GPIO, но вывод не переключается

Настраиваете вывод PB5 на выход и подаёте на него единицу:

GPIOB->MODER |= (1U << (5 * 2));   // PB5 в режим выхода
GPIOB->ODR   |= (1U << 5);          // подать высокий уровень

Светодиод не загорается. Отладчик показывает: после обеих записей регистры GPIOB читаются как нули, значения не сохраняются.

В чём наиболее вероятная причина?

  • На этом семействе микроконтроллеров запись в ODR запрещена: менять состояние вывода можно только через регистр BSRR
  • Вывод PB5 всегда занят отладочным интерфейсом SWD и потому недоступен пользовательскому приложению
  • Отладчик не умеет читать регистры периферии по шине и всегда показывает нули вместо их реального содержимого
  • На порт GPIOB не подана тактовая частота: пока периферия не затактована, запись в её регистры не сохраняется

🔒 Проверка ответа — для участников клуба

  • Проверка ответа
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела