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 문제로 디버깅이 안된다면
펌웨어 업그레이드를 해보시길 바랍니다.