Embedded Programming (STM)/STM32F411RE
STM32 (9월 12일, STM32 입문 - (1))
유로 청년
2024. 9. 12. 20:21
1. STM32 시작
- 오늘부터 STM32를 배우기 시작했기 때문에 STM32에 대한 게시글을 올리고자 한다.
- 먼저 제일 간단한 LED를 On 하는 것부터 차근차근 구현하고자 한다.
- 이를 위해 HAL 함수를 이용하여 구현하도록 하겠다.
2. STM32보드에 있는 LD2, LED를 1초마다 깜박이도록 만들자.
2.1. 1단계) 몇 번핀을 OUTPUT으로 설정해야하는가?
- ★★★★★★★★★★
Q) STM32보드상에 있는 LD2, LED를 On하기 위해서는 몇 번 핀을 OUTPUT으로 설정해야 하는가?
A) 이는 STM32 보드의 회로도를 보고, 어떤 핀이 LD2와 연결되었는가?를 살펴볼 필요가 있다.
- 위 STM32의 회로도를 통해 LD2, LED와 D13과 회로로 연결되어 있음을 확인 할 수 있다.
- 또한, 위 STM32의 핀들 중 PA5번 핀과 D13이 회로로 연결되어 있음을 확인할 수 있다.
- 이는 즉, PA5핀을 OUTPUT으로 설정함으로서 LD2, LED을 ON할 수 있음을 회로도를 통해 확인할 수 있다.
2.2. 2단계) STM32의 Pin configuration에서 PA5핀을 GPIO_OUTPUT으로 설정한다.
- 프로젝트에서 ioc 파일을 더블 클릭하면 Pin configuration 창을 볼 수 있다.
- PA5핀을 클릭 한 뒤, PA5핀을 GPIO_OUTPUT으로 설정한다.
- GPIO_OUTPUT으로 설정하면 PA5핀이 초록색으로 변한 것을 확인할 수 있다.
- GPIO 설정이 끝나면 Control + S를 눌러 설정 사항을 저장한다.
2.3. 3단계) 프로젝트의 main.c 파일에서 HAL 함수를 이용하여 PA5핀의 값을 수정한다.
- HAL 함수를 이용하여 PA5핀 값을 0.5초 동안 1을 출력하고, 0.5초 동안 0을 출력하도록 설계하였다.
- 이를 통해 STM 보드의 LD2, LED는 1초를 주기로 깜박꺼리게 된다.
- HAL_Delay 함수는 ms 단위로 Delay Time을 갖는다.
int main(void)
{
/* USER CODE BEGIN 1 */
/* USER CODE END 1 */
/* MCU Configuration--------------------------------------------------------*/
/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init();
/* USER CODE BEGIN Init */
/* USER CODE END Init */
/* Configure the system clock */
SystemClock_Config();
/* USER CODE BEGIN SysInit */
/* USER CODE END SysInit */
/* Initialize all configured peripherals */
MX_GPIO_Init();
/* USER CODE BEGIN 2 */
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, 1);
HAL_Delay(500); // 500ms
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, 0);
HAL_Delay(500); // 500ms
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
}
2.4. 코드 작성을 끝내면 Build Project한 뒤, Run한다.
- 아래 사진과 같이 해당 프로젝트를 Build 한 뒤, Run Project 한다.
2.5. 구현