Использование системных GPIO на STM32
У STM32F103C8T6 имеется 37 GPIO. Однако не все из них можно использовать по-умолчанию в своих целях. Это касается пинов:
- PD0, PD1 — к ним подключен системный кварц;
- PC14, PC15 — часовой кварц;
- PA13, PA14, PA15, PB3, PB4 — JTAG.
Итого, минус 9 пинов. Многовато…

И если с кварцем мы практически ничего поделать не можем (без ущерба стабильности и функциональности), то вот от JTAG в определённых случаях мы можем избавиться. Для этого необходимо добавить всего лишь две строки в код:
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE);
После этого мы можем использовать пины PA13, PA14, PA15, PB3, PB4 в своих целях. Но есть одно но: пропадает возможность отладки программы во время выполнения через ST-Link. И для перепрошивки чипа придётся нажимать вручную Reset на плате. Но иногда дополнительные GPIO важнее таких мелочей.