개요
STM32F103은 임베디드 분야에서 가장 널리 쓰이는 MCU 중 하나입니다. STMicroelectronics에서 제공하는 공식 개발 보드(Nucleo 등)는 훌륭한 도구이지만, 디버거와 MCU 파트가 하나로 붙어 있는 구조 때문에 처음 접하는 분들은 다음과 같은 고민에 빠지기도 합니다.
“나중에 내가 직접 커스텀 보드를 만들 때, 디버거는 어떻게 연결하고 다운로드해야 하지?”
물론 디버거와 보드의 관계에 익숙해지면 전혀 문제 될 것이 없지만, 초기 단계에서 외부 디버거(ST-LINK 등)를 직접 연결해 보며 회로 설계의 감을 잡는 것은 매우 큰 장점이 됩니다. 여기에 ‘가격’이라는 현실적인 요소까지 더해지면 우리는 자연스럽게 알리익스프레스 등에서 판매하는 저렴한 별도의 개발 보드를 찾게 됩니다.
하지만 막상 보드를 구매해도 제대로 된 회로도가 없어 핀 하나를 연결할 때마다 막막함을 느끼는 경우가 많습니다. 본 글에서는 이러한 불편을 해소하기 위해, 제가 직접 보드를 실험하며 일일이 찾아 정리한 STM32F103 보드 핀맵 정보를 공유하고자 합니다.
이 글은 STM32F103 알리보드 가이드 입니다.
본론
아래 그림과 같은 보드를 가지고 설명을 하겠습니다.
알리익스프레스에서 판매를 하고 있는 제품 입니다, stm32f103vet6로 검색하면 됩니다.

이 보드는 STM32F103VET6를 장착하여 72MHz의 동작속도와 512KB Flash 및 64KB RAM을 가지고 있어서 크기가 큰 프로젝트도 개발 할 수 있습니다.
특히 RS232C/RS485/CAN 통신 인터페이스가 내장되어 있어서 별도의 통신 모듈이 없어도 통신 관련 실험을 해 볼 수 있습니다.
또한 아두이노 보드와 같이 두 개의 40핀 헤더를 통해 80핀이 외부로 나와 있어서 다양한 실험을 할 수 있습니다.
상세한 스펙 및 사양은 알리익스프레스의 해당 사이트에서 참조 할 수 있습니다.
다만 여기서 제공하는 회로도는 판독이 불가능합니다.
왜 이런 회로도를 올려 놓았는지는 이해가 되지 않습니다. 어떤 분은 판매 사이트에 직접 연락하여 메일로 제대로 된 회로도를 받았다고 합니다.
그렇게도 할 수 있겠으나 귀찮은 일 입니다.
따라서 저는 멀티메터로 일일이 핀을 찾아 보았습니다.
판매자가 제공하는 자료 대신, 제가 직접 테스터기로 찍어보며 확인한 주요 인터페이스 핀들을 정리했습니다.
이 정보만 있어도 큐브IDE(STM32CubeIDE)에서 기본 설정을 잡는 데 문제가 없을 것입니다.
전원 및 디버깅 핀(SWD)
다운로드는 SWD 방식으로 하며 ST-LINK의 20핀 콘넥터를 사용하여 보드의 해당 콘넥터에 삽입하면 됩니다.
어떤 핀에 연결되는 지를 알아 보는 것도 향후 커스텀 보드를 설계할때 필요합니다. 따라서 일전에 DMA+GPIO실험을 할때
사용하였던 방법을 설명 드리겠습니다. 그것은 기존 ST사에서 나온 개발보드(NUCLEO-F429ZI)에서 디버거 파트만 이용하는 방법입니다.
디버거 파트만 이용하고자 할 때는 CN4에 삽입되어 있는 Jumper를 모두 제거 해야 합니다.
아래가 실제 연결한 사진 입니다.

위 그림의 핀 번호에 맞추어 연결하면 됩니다. 유의해야 할 점은 CN4의 Jumper핀은 반듯이 제거해야 합니다.
제거 하지 않으면 내부 Nucleo 보드를 이용한다는 의미입니다. 우리는 단지 디버거만 연결하고 외부 개발 보드를 이용해야 하므로 제거를 해야 합니다.
이 디버거는 실제로 ST-LINK/V2-1 디버거 입니다.
위와 같이 연결을 마쳤다면, 이제 STM32CubeIDE나 ST-LINK Utility에서 타겟 보드가 정상적으로 인식되는지 확인하면 됩니다.
-
주의: 알리보드 자체에도 별도의 전원(DC 5V 등)이 인가되어 있어야 합니다. NUCLEO 보드의 ST-LINK는 타겟의 전압을 감지(VDD_TARGET)할 뿐, 보드 전체에 충분한 전력을 공급하기에는 부족할 수 있기 때문입니다.
부트설정
BOOT0, BOOT1 점퍼를 통해 펌웨어 업로드 모드를 물리적으로 설정할 수 있습니다.
STM32F103의 부트 모드는 아래와 같습니다. 이것은 User Manual에 있는 내용입니다.

아래 링크에서 STM32F103의 Reference Manual을 다운로드 받을 수 있습니다.
STM32F101xx, 102xx, 103xxm 105xx, 107xx Reference Manual
보드의 뒷면에 사진과 같이 부트모드에 대한 Jumper 연결 Table이 그려져 있습니다/

우리는 Flash에서 부팅을 해야 하므로 아래 사진 처럼 연결하면 됩니다.

버튼 및 LED 핀맵
다음은 버튼 및 LED의 핀맵 입니다.
D1은 전원 LED이고 SW1은 리셋 버튼이므로 우리가 알아야 할 것은 D2, D3, SW2, SW3 입니다.
D2_LED : PB13
D3_LED : PB14
SW2 : PB1
SW3 : PB15
일단 위 정보 만으로 펌웨어를 시험 해 볼 수 있습니다.
통신관련 핀맵
개발 보드에는 3개의 통신 인터페이스가 있습니다.
RS232-C, RS-485 그리고 CAN 통신입니다.
RS-232C
USART1_TX : PA9
USART1_RX : PA10
RS-485
USART3_RX : PB11
USART3_TX : PB10
/RE : PC5
DE : PC4
CAN
CAN_TX : PB9
CAN_RX : PB8
마치며
지금까지 제대로 된 자료가 없어 사용이 망설여졌던 STM32F103VET6 알리보드의 초기 설정부터 상세 핀맵까지 모두 살펴보았습니다.
정품 보드의 편리함을 잠시 내려놓고 직접 디버거를 연결하고 핀을 찾아보는 과정은, 장기적으로 나만의 커스텀 보드를 설계할 때 큰 자산이 될 것입니다. 오늘 정리한 이 데이터들이 여러분의 임베디드 학습과 프로젝트 개발에 든든한 가이드가 되길 바랍니다.
아래 링크는 위 보드를 가지고 DMA+Timer+GPIO를 실험한 글 입니다. 펌웨어도 다운로드 받을 수 있습니다.
STM32+DMA+Timer+GPIO 실험
“STM32F103 실전 가이드: 알리보드로 시작하는 임베디드”에 대한 1개의 생각