Как включить светодиод на STM32F1 GPIO вывод PA2? - PullRequest
0 голосов
/ 26 января 2020

Как включить светодиод на PA2 GPIO (STM32F103C8T6), используя стандартную конфигурацию реестра.

RCC-> APB2ENR |= (1<<2);
GPIOA->CRL |= (1<<9);
GPIOA->ODR |= (1<<3);

У меня не работает. Подскажите, пожалуйста, где я ошибаюсь?

1 Ответ

2 голосов
/ 04 февраля 2020

Согласно справочному руководству регистры CRL GPIOA сбрасываются как 0x4444 4444 (см. Раздел 9.2.1 справочного руководства). Когда вы выполняете следующую команду:

GPIOA->CRL |= (1<<9);

вы устанавливаете биты РЕЖИМА PA2 на 10 (режим вывода, максимальная скорость 2 МГц). Но из-за инициализации начального регистра биты CNF2 равны 01, что является конфигурацией с открытым стоком. Вместо этого вы должны инициализировать PA2 следующим образом:

GPIOA->CRL &= ~(0b0000<<8);
GPIOA->CRL |= (0b0010<<8);

Это гарантирует, что оба MODE2 и CNF2 установлены, так что вывод действует как выход с конфигурацией pu sh -pull

...