Использование системных GPIO на STM32

У STM32F103C8T6 имеется 37 GPIO. Однако не все из них можно использовать по-умолчанию в своих целях. Это касается пинов:

  • PD0, PD1 — к ним подключен системный кварц;
  • PC14, PC15 — часовой кварц;
  • PA13, PA14, PA15, PB3, PB4 — JTAG.

Итого, минус 9 пинов. Многовато…

snap_screen_20180521003541

И если с кварцем мы практически ничего поделать не можем (без ущерба стабильности и функциональности), то вот от JTAG в определённых случаях мы можем избавиться. Для этого необходимо добавить всего лишь две строки в код:

RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE);

После этого мы можем использовать пины PA13, PA14, PA15, PB3, PB4 в своих целях. Но есть одно но: пропадает возможность отладки программы во время выполнения через ST-Link. И для перепрошивки чипа придётся нажимать вручную Reset на плате. Но иногда дополнительные GPIO важнее таких мелочей.