안녕하세요 하드웨어 개발자 보노노 입니다.
업무 역량을 늘리기 위해 펌웨어도 공부하려고 합니다.
좋은 유튜브 사이트가 있어 키트를 구매하였고, 무작정 따라하면서 기록을 남기고자 글을 올립니다.
준비물
1. 보드 구매 링크 ( https://smartstore.naver.com/mhivestore/products/4953744659 )

- 링크 안에 구매 리스트 모두 적혀 있으므로 참고 바랍니다.
2. 펌웨어 프로그램 설치 방법 ( https://www.youtube.com/watch?v=WzmPlObIr_c&list=PLUaCOzp6U-RqMo-QEJQOkVOl1Us8BNgXk&index=1 )
- 위의 링크 [강좌 0~2]에 CubeMX 설치 방법이 있으므로 비슷한 방법으로 CubeIDE를 다운 받으시면 됩니다.
- TrueSTUDIO와 CubeMX를 모두 합친 프로그램이 CubeIDE 입니다. 여기선 CubeIDE로 설명 드리겠습니다.
HW (회로도)

- 스위치는 Pull-down이 되어있고 LED는 Pull-up이 되어있음.
- 스위치의 포트는 HIGH 신호를 공급함. 스위치를 누를 경우 동작 함.
- LED의 포트는 LOW신호를 주어야 LED가 출력 됨.
CubeIDE 설정




- 외부 클럭 설정
- GPIO 포트 설정 (SW는 GPIO_INPUT 설정, LED는 GPIO_OUTPUT 설정)
*참고

- 포트 설정 후 Code Generator할 시, 위의 사진대로 설정.
- 별도의 파일로 만들기 위해 체크. 체크 안할 경우 기존 프로그램을 덮어 씌움.
FW
자동완성 기능 : Ctrl + space
정의로 이동 : F3
다운로드(DEBUG MODE) : F11
디버그 모드에서 한줄씩 수행 : F6
디버깅 모드 종료 : 컨트롤+ F2
- main.c
/* USER CODE BEGIN Header */
/**
******************************************************************************
* @file : main.c
* @brief : Main program body
******************************************************************************
* @attention
*
* Copyright (c) 2022 STMicroelectronics.
* All rights reserved.
*
* This software is licensed under terms that can be found in the LICENSE file
* in the root directory of this software component.
* If no LICENSE file comes with this software, it is provided AS-IS.
*
******************************************************************************
*/
/* USER CODE END Header */
/* Includes ------------------------------------------------------------------*/
#include "main.h"
#include "gpio.h"
/* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes */
/* USER CODE END Includes */
/* Private typedef -----------------------------------------------------------*/
/* USER CODE BEGIN PTD */
/* USER CODE END PTD */
/* Private define ------------------------------------------------------------*/
/* USER CODE BEGIN PD */
/* USER CODE END PD */
/* Private macro -------------------------------------------------------------*/
/* USER CODE BEGIN PM */
/* USER CODE END PM */
/* Private variables ---------------------------------------------------------*/
/* USER CODE BEGIN PV */
/* USER CODE END PV */
/* Private function prototypes -----------------------------------------------*/
void SystemClock_Config(void);
/* USER CODE BEGIN PFP */
/* USER CODE END PFP */
/* Private user code ---------------------------------------------------------*/
/* USER CODE BEGIN 0 */
/* USER CODE END 0 */
/**
* @brief The application entry point.
* @retval int
*/
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)
{
/* USER CODE END WHILE */
if(HAL_GPIO_ReadPin(GPIOE, GPIO_PIN_3) == GPIO_PIN_SET) // SW를 눌렸을 때
{
HAL_GPIO_WritePin(GPIOD, GPIO_PIN_12, GPIO_PIN_SET); // RGB(BLUE) LED ON
HAL_GPIO_WritePin(GPIOD, GPIO_PIN_13, GPIO_PIN_SET); // RGB(RED) LED ON
HAL_GPIO_WritePin(GPIOD, GPIO_PIN_14, GPIO_PIN_SET); // RGB(GREEN) LED ON
}
else // SW를 땠을 때
{
HAL_GPIO_WritePin(GPIOD, GPIO_PIN_12, GPIO_PIN_RESET); // RGB(BLUE) LED OFF
HAL_GPIO_WritePin(GPIOD, GPIO_PIN_13, GPIO_PIN_RESET); // RGB(RED) LED OFF
HAL_GPIO_WritePin(GPIOD, GPIO_PIN_14, GPIO_PIN_RESET); // RGB(GREEN) LED OFF
}
/* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
}
FW 설명
- 주석 참고.
출처 : https://www.youtube.com/watch?v=myo3aTcLxzM&list=PLUaCOzp6U-RqMo-QEJQOkVOl1Us8BNgXk&index=3