본문 바로가기

Develop Knowledge/STM32F4 by ChrisP

1강. GPIO로 LED출력 및 스위치 입력

본 단행본은 inflearn에 있는 ChrisP 강사님의 "HAL, CubeMX, TrueSTUDIO를 이용한 STM32F4 무료 강좌"를 정리한 글입니다.

 

강좌 바로 보기 >> https://www.inflearn.com/course/stm32f4/dashboard

 

[무료] HAL, CubeMX, TrueSTUDIO를 이용한 STM32F4 무료 강좌 - 인프런 | 강의

고성능 마이크로컨트롤러인 STM32F 시리즈를 처음 접하는 분들이 쉽게 시작할 수 있도록 무료 컴파일러 TrueSTUDIO 및 코드자동생성 프로그램 CubeMX 설치부터 칩 기능의 개념설명, 소스코드작성(HAL

www.inflearn.com

 

- 회로도

 

- CubeMX 설정

1. Pinout & Configuration에서 다음과 같이 설정.

System Core -> RCC -> HSE -> Crystal/Ceramic Resonator

RCC는 Reset and Clock Control을 뜻하며, 각 모듈의 동작 주파수를 제어하는 모듈을 뜻합니다. 이걸로 주변장치(peripheral)에 들어가는 클럭의 주파수를 제어할 수 있습니다.

HSE는 High Speed External을 뜻하며, 외부에서 공급하는 고속의 클럭 소스를 의미합니다. 즉, 외부 크리스탈/오실레이터를 의미합니다.

 

PD12, PD13, PD14, PC6, PB5, PB0 -> GPIO_OUTPUT

PE3, PC15, PD4, PD10 -> GPIO_INPUT

Pinout View에서 마우스 왼클릭으로 설정할 수 있습니다.

 

2. Clock Configuration에서 다음과 같이 설정.

Input frequency -> 8

HCLK -> 168

Input frequency를 8로 하는 이유는, 강좌에서 사용하는 보드의 외부에 8MHz 크리스탈이 달려있기 때문입니다.

HCLK는 사전적으로는 AHB Clock으로, 내부 고속 BUS의 동작 주파수라고 합니다. 간단히 말하면, STM32가 동작되는 Clock과 동일합니다.

 

3. Project Manager에서 다음과 같이 설정.

Code Generator -> Generate peripheral initialization as a pair of '.c/.h' files per peripheral

이걸 해주면 peripheral마다 파일이 분리해서 생성되서, 파일 관리가 쉬워진다.

 

 

 

- 코드 작성

HAL_GPIO_WritePin(GPIOC, GPIO_PIN_6, GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_5, GPIO_PIN_SET);

while (1)
{
	  if(HAL_GPIO_ReadPin(GPIOE, GPIO_PIN_3) == GPIO_PIN_SET) // 스위치가 눌렸을 때
	  {
		  HAL_GPIO_WritePin(GPIOC, GPIO_PIN_6, GPIO_PIN_RESET);
	  }
	  else // 스위치가 때졌을 때
	  {
		  HAL_GPIO_WritePin(GPIOC, GPIO_PIN_6, GPIO_PIN_SET);
	  }
}

 

 

'Develop Knowledge > STM32F4 by ChrisP' 카테고리의 다른 글

3강. Character LCD 문자열 출력  (0) 2023.02.02
2-3강. UART Rx Interrupt  (0) 2023.02.02
2-2강. UART printf 사용하기  (0) 2023.02.02
2-1강. UART 통신 (폴링방식)  (0) 2023.02.02
STM32F4 by ChrisP Introduction  (0) 2023.02.02