
이것이 발광 다이오드의 기호이다.
SB(Solder Bridge)는 사용자가 필요에 따라 납땜으로 연결(Short)하거나 연결하지 않음(Open)으로 설정할 수 있게 만든 PCB상의 작은 브리지

위는 STM32F103RB-NUCLEO 보드의 뒷면이다. 뒷면에 보이는 SB__ 로 적혀있는 부분이 전부 솔더브릿지이다.

위와같이 Schematic에서 SB를 확인할수있다.
이러한 SB들은 내가 직접 보드의 뒷면을 보고 연결되어있는지 아닌지 확인해야한다.

SB21은 연결되어있고,SB18은 연결되어있지않다.
위와같이 연결된 SB와 연결되지않은 SB를 확인할 수 있다.

Schematic에서 발광 다이오드 LD2를 찾을 수 있다.

보드의 뒷면을 보고 SB21, SB42, SB29가 어떻게 연결되어있는지 확인해야한다.

- SB21 : Short
- SB29 : OPEN
- SB42 : SHORT
이다.
즉, LD2는 PA5와 연결되어 있음을 확인할 수 있다.

PA5-GPIO_Output 으로 PA5를 GPIO로 설정하고 방향은 OUT으로 설정한다.

위와 같이 정상적으로 PA5가GPIO로, 방향은 OUT 으로 설정된 것을 확인할 수 있다.

Configuration-PA5 를 누르면 이처럼 PA5 Configuration 창이 열리고 세부적인 설정을 할 수 있다.

Ctrl+S 로 저장하면 위와 같은 화면이 뜬다. Yes 를 누르면 자동으로 앞서 진행한 클락 설정, 핀 설정등의 C언어 코드가 Generate 된다.

Drivers-STM32F1xx_HAL_Driver-inc-stm32f1xx_hal_gpio.h에 들어가면
void HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState);
위와 같은 함수를 찾을 수 있다. 이 함수는 특정 GPIO핀에 HIGH나 LOW를 쓰는 함수이다.
main.c로 돌아가자.

main.c 의 main() 내부의 무한 루프문이다.
여기에
/* USER CODE BEGIN 3 */
/* USER CODE END 3 */
와 같은 식으로 주석이 있는데, 이 내부에만 본인이 코드를 작성해야한다. 외부에 작성하면 코드를 Generate 할 때 전부 사라져버린다.

위와 같이 코드를 작성해준다.

75행을 더블 클릭으로 브레이크 포인트를 걸어준다.
디버깅에 이용할 예정이다.

위와같이 케이블을 이용해 STM32 <-> PC간 연결해준다.
STM32F103RB NUCLEO 보드는 내부에 ST-LINK를 포함하고있고, 내부적으로 ST-LINK와 STM32F103RB가 연결되어있다.

F11을 누르면 위와 같이 프로젝트를 빌드할 수 있다.

OK를 눌러준다.

위와같이 ST-LINK 펌웨어 업데이트 하라하면 YES 누르고 진행해준다.

GOOD

Console을 보니 STM32에 정상적으로 코드가 업로드된 것 같다.

현재 위와같이 HAL_Init()에 이전에 설정해둔 BreakPoint가 걸려있다.
Resume 버튼 (F8)을 눌러서 실행을 재개해준다.

LD2가 정상적으로 깜빡이는 것을 확인할 수 있다.
GOOD

위의 버튼을 누르거나 CTRL+F2 하면 디버깅이 중지된다.