|
|||||||
Как освободить ножки PB3, PB4, PA15 на STM32 BluePill через CMSIS
Время создания: 11.10.2022 15:40
Текстовые метки: stm32, bluepill, CMSIS, ножки, порт, PB3, PB4, PA15, освободить, JTAG, AFIO
Раздел: Компьютер - Аппаратное обеспечение - Микроконтроллеры ARM
Запись: xintrea/mytetra_syncro/master/base/1665492004pi2bp3es78/text.html на raw.github.com
|
|||||||
|
|||||||
При разработке под микроконтроллер STM32F103C8T6 (и ему подобные) можно наткнуться на ситуацию, что некоторые ножки не настраиватются на режим ввода/вывода и не работают как положено. Обычно это касается ножек, на которые разведен JTAG. По-умолчанию все ножки не подключены к дополнительному оборудованию, а вот JTAG-овые сконфигурированы на работу JTAG, чтобы была доступна отладка. Если отладка по JTAG ненужна, например когда прошивание и отладка делается по SWD-разъему, то эти ножки можно переконфигурировать в обычные порты ввода-вывода. Обычно это ножки PB3, PB4, PA15. В интернете на профильных форумах говорится, что для "освобождения" ножек PB3, PB4, PA15 нужно настроить бит SWJ_CFG регистра AFIO_MAPR для отключения JTAG. Т. е. оставить только порт отладки SWD для отладки кода. И нужно не забыть включить тактирование AFIO в регистре RCC. Если используется библиотека CMSIS, то код может быть следующий: // Отключение JTAG для освобождения PB3, PB4, PA15 AFIO->MAPR |= AFIO_MAPR_SWJ_CFG_JTAGDISABLE; // Дополнительная настройка для освобождения PA15 // (среди прочих выставляется RCC_APB2ENR_AFIOEN) RCC->APB2ENR = RCC_APB2ENR_USART1EN | RCC_APB2ENR_TIM1EN | RCC_APB2ENR_SPI1EN \ | RCC_APB2ENR_ADC1EN | RCC_APB2ENR_ADC2EN | RCC_APB2ENR_AFIOEN \ | RCC_APB2ENR_IOPDEN | RCC_APB2ENR_IOPCEN | RCC_APB2ENR_IOPBEN \ | RCC_APB2ENR_IOPAEN; Если еще точнее, то такой код инициализации точно работает: // Включение тактирования портов GPIOA, GPIOB, GPIOC Начинают работать все три проблеммные ножки: PB3, PB4, PA15. Оказывается, очень сильно влияет последовательность инициализации. Вначале надо разрешать тактирование AFIO, и только потом отключать JTAG. В другой последовательности ничего не настроится. |
|||||||
Так же в этом разделе:
|
|||||||
|
|||||||
|