본문 바로가기
MCU/STM32

NUCLEO-F103RB로 STM32CubeIDE 시작하기 3

by mokhwasomssi 2021. 5. 17.

STM32CubeIDE 처음 사용하는 사람을 대상으로 작성하였습니다.

 

개발환경 : STM32CubeIDE

개발보드 : NUCLEO-F103RB

목표 : 내장 led 제어, UART로 문자열 출력.
목차

NUCLEO-F103RB로 STM32CubeIDE 시작하기 1
    0. 서론
    1. 프로젝트 생성.
    2. ST-LINK 설정.

NUCLEO-F103RB로 STM32CubeIDE 시작하기 2
    3. 클럭 세팅

NUCLEO-F103RB로 STM32CubeIDE 시작하기 3
    4. LED
        4-1. STM32CubeMX를 이용해서 GPIO 설정
        4-2. LED 깜빡이기

NUCLEO-F103RB로 STM32CubeIDE 시작하기 4
    5. UART
        5-1. STM32CubeMX를 이용해서 UART 설정
        5-2. UART 통신으로 문자열 송수신

 


 

4. LED
    4-1. STM32CubeMX를 이용해서 GPIO 설정

 

내장 LED가 어떤 핀하고 연결되어있는지 찾아야합니다. 

스케메틱을 보니 핀에 바로 연결되어있는 LD2가 직접 제어할 수 있는 내장 LED 같네요.

 

SB는 솔더 브릿지입니다. 

뒤 쪽을 보시면 SB42가 연결이 되어있고 SB29는 연결이 안되어 있는 걸 볼 수 있습니다. 

PA5가 LED랑 연결되어 있네요. SB21도 연결되어 있고요.

 

다시 STM32CubeIDE로 돌아가서 PA5를 클릭하면 이 핀으로 사용할 수 있는 기능들이 뜹니다.

GPIO_Output으로 설정합니다.

System Core - GPIO를 클릭하시면 PA5 핀이 활성화 되어있습니다. 

추가적인 설정이 가능합니다. 

 

지금까지의 변경사항을 저장하면 자동으로 코드가 만들어집니다. 

 

4. LED
    4-2. LED 깜빡이기

 

HAL Driver에서 GPIO 제어 함수를 제공합니다.

맨 오른쪽에 하이라이트 한 것이 GPIO 핀을 on/off 하는 함수입니다. 

 

이 함수의 인자로 GPIO 포트 종류, 핀 번호, 핀 상태가 들어갑니다. 

 

GPIO 포트 종류 : GPIOA, GPIOB, GPIOC, ....

핀 번호 : GPIO_PIN_0, GPIO_PIN_1, GPIO_PIN_2, ...

핀 상태 : GPIO_PIN_SET, GPIO_PIN_RESET

void HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState);

 

이렇게 사용합니다 - PA5핀, off 상태.

HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_RESET);

 

main.c 의 while문 입니다. 

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */

	  HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_RESET); // 끄고
	  HAL_Delay(100); // 100ms 딜레이
	  HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_SET); // 키고
	  HAL_Delay(100); // 100ms 딜레이

  }
  /* USER CODE END 3 */
}

 

/* USER CODE BEGIN 3 */

 

코드를 이 내부에 써야 본인이 작성한 코드가 보존됩니다. 

외부에 작성하면 코드 제너레이트 시에 깡그리 없어집니다. 

 

/* USER CODE END 3 */

 

 

디버깅 버튼(F11)을 누릅니다. 

 

HAL_Init(); 에 브레이크 포인트가 걸려있습니다. 

Resume 버튼(F8)을 누르면 이후 코드가 실행되면서 LED가 깜빡입니다. 

 

 

디버깅 중단은 이 버튼입니다.

 

혹시나 ST-LINK 문제로 디버깅이 안된다면

펌웨어 업그레이드를 해보시길 바랍니다.