임베디드

[펌웨어] CubeIDE로 내부/외부 LED 켜기

히똔 2022. 5. 2. 16:33
728x90
반응형

개발환경


보드 : Nucleo-F103RB
CPU 칩셋 : STM32F103RB
CPU 설계 : ARM Cortex-M3
IDE : STM32CubeIDE

 

shematic 회로도


https://www.st.com/en/evaluation-tools/nucleo-f103rb.html#cad-resources

 

NUCLEO-F103RB - STMicroelectronics

NUCLEO-F103RB - STM32 Nucleo-64 development board with STM32F103RB MCU, supports Arduino and ST morpho connectivity, NUCLEO-F103RB, STMicroelectronics

www.st.com

여기서 schematic을 다운받아보면 내장 장치가 물리적으로 몇번 핀에 연결되어있는지 확인할 수 있다.

 

내장 LED 켜기


1. 장치 연결에 대한 이해

- 보드

LED 3개 위치

 

- shematic 회로도

shematic 회로도

두번재 LED인 LD2는 PA5 핀과 연결되어있다.

 

- 핀아웃 뷰

CubeIDE에서 핀아웃 뷰를 보면 기본값으로 PA5에 LD2 라벨링이 되어있다.

CubeIDE 핀아웃

 

2. 코드 작성

핀아웃뷰를 generate하면 main.c 파일이 생긴다.

 

여기서 주의할 점은 USER CODE 주석 안에 코드를 작성해야한다.

/* USER CODE BEGIN 3 */
/* USER CODE END 3 */

왜냐하면 generate할때 이 주석 안에 있는 애들은 그대로 유지된 채 새로고침 되기 때문이다.
다른 곳에 쓰면, 내가 작성한 코드가 날라갈 수 있으니 주의해야한다.

LD2를 켜고 끄는 코드는 다음과 같다.

  HAL_GPIO_WritePin(LD2_GPIO_Port, LD2_Pin, GPIO_PIN_RESET);
  HAL_Delay(100);
  HAL_GPIO_WritePin(LD2_GPIO_Port, LD2_Pin, GPIO_PIN_SET);
  HAL_Delay(100);

 

3. 결과

 

외부 LED 켜기


1. 장치 연결에 대한 이해

- 보드와 shematic 회로도

보드와 회로도의 관계

 

- 보드

회로도에 맞게 LED를 연결해준다.

 

- 핀아웃 뷰

PC8 과 PC6에 GPIO를 설정해준다

- 프로젝트 매니저

프로젝트 매니저

핀아웃의 오른쪽에 있는 메뉴에서 코드 제너레이터를 다음과 같이 설정해주고 제너레이트하면 gpio.c가 생성된다.

 

gpio.c

gpio에 대한 정보가 담겨있고, 박스 친 부분엔 내가 설정해 둔 gpio 핀을 확인할 수 있다.

 

2. 코드 작성

gpio.c에서 코드를 가져와서 마지막 파라미터만 변경하여 LED를 껐다 킬 수 있다.

 

USER CODE 사이에 코드를 넣어준다.

  HAL_GPIO_WritePin(LD2_GPIO_Port, LD2_Pin, GPIO_PIN_RESET);
  HAL_GPIO_WritePin(GPIOC, GPIO_PIN_8, GPIO_PIN_RESET);
  HAL_GPIO_WritePin(GPIOC, GPIO_PIN_6, GPIO_PIN_SET);
  HAL_Delay(100);
  HAL_GPIO_WritePin(LD2_GPIO_Port, LD2_Pin, GPIO_PIN_SET);
  HAL_GPIO_WritePin(GPIOC, GPIO_PIN_8, GPIO_PIN_SET);
  HAL_GPIO_WritePin(GPIOC, GPIO_PIN_6, GPIO_PIN_RESET);
  HAL_Delay(100);

 

3. 결과

 

728x90
반응형