Kraklog

STM32H747I-DISCO #1 RCC 및 GPIO 그리고 초기설정 본문

Study/개발(STM,RASP,ARDUINO)

STM32H747I-DISCO #1 RCC 및 GPIO 그리고 초기설정

Krakens 2025. 8. 4. 22:55
728x90

 

2025.08.04 - [Study/개발(STM,RASP,ARDUINO)] - STM32H747I-DISCO 다뤄보기

#1 RCC 및 GPIO 그리고 초기설정

사용프로그램  : STM32 CubeIDE 1.19 , CMRT 혹은 Putty

 


CubeIDE에서 프로젝트를 생성 후 STM32를 정확하게 구동시키기위해 RCC Mode and Configuration 탭을 활성화 시

활성화 시켜주지 않으면 HSE *(High Speed External Oscillator) 을 사용 할 수없다.


SYSCLK (시스템클럭)에는 HSI, HSE, PLL이 있으며 외에도 LSI(Watchdog, stop/standby mode, Auto wake up 등등의 용도)
LSE (Low speed External Oscillator, RTC 용) 으로 사용 할 수 있다.
다만, HSI와 LSI는 오차가 발생 할 수 있기 때문에 외부 크리스털 사용이 권장된다.

 

SMPS/LDO PSU 설정


RCC 설정을 위해서는 Reference menual 을 봐야하는데 

이 보드는 설정이 복잡해서 그런지 SMPS/LDO 모드가 나눠져있다.
기본은 SMPS mode 이지만, 적혀있는 SB 패드를 확인해주는것이 좋다.
 

J1, J2 가 설정된다.

HSE만 필요하기에 HSE만 활성화 해준다.

 

참고로  Referene menual(0399)에 맞춰서 나왔기때문에 저대로 사용해주었다.

다음은 클럭을 계산하기 쉽게 400MHz로 변경해주었다. 다른 칩셋을 살펴보면 550MHz까지도 지원하는듯 싶다.

다음으론 Debug용도로 사용하기 편한 UART와 GPIO를 세팅

DISCO 보드는 USART1 이 연결되어있다.
정확하게 맞춰서 설정해준다.

Asynchronous 모드로 사용할것이고, Baud Rate는 변경을 해도 되는데

USART1 에 100MHz가 공급되고 있기 때문에 100 / 16 으로 6.25MBits/s 가 된다.

하지만 User menual을 따르는걸 권장함.

장치관리자에서 포트를 확인하면 COM7에 연결이 되어있다.
PUTTY 혹은 CRMT를 설정해주면 우선 UART는 연결이 끝났다.

 

User menual을 보면 LD1 - LD4 까지 연결되어있는것이 보인다.
LED를 인디케이터로 삼으면 단계별로 동작을 알 수 있어서 편하긴하다.

핀번호에 맞춰 설정을 해주고, Pin Context Assignment 를 설정해준다.
M7 코어만 다룰것이기에 M7으로 해준다.

그리고 code를 Generate 해주면 Cube에서 설정은 끝이다.

#include "main.h"

/* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes */
#include "stdio.h"
#include "string.h"
/* USER CODE END Includes */

/* Private typedef -----------------------------------------------------------*/
/* USER CODE BEGIN PTD */

/* USER CODE END PTD */

 

우선 Pritnf를 사용해주기 위해 stdio와 string 을 추가해준다.

UART_HandleTypeDef huart1;

/* USER CODE BEGIN PV */

/* USER CODE END PV */

/* Private function prototypes -----------------------------------------------*/
void SystemClock_Config(void);
static void MX_GPIO_Init(void);
static void MX_USART1_UART_Init(void);
/* USER CODE BEGIN PFP */

/* USER CODE END PFP */

/* Private user code ---------------------------------------------------------*/
/* USER CODE BEGIN 0 */
#ifdef __cplusplus
extern "C" int _write(int32_t file, uint8_t *ptr, int32_t len) {
#else
int _write(int32_t file, uint8_t *ptr, int32_t len) {
#endif
    if( HAL_UART_Transmit(&huart1, ptr, len, len) == HAL_OK ) return len;
    else return 0;
}
/* USER CODE END 0 */



printf 를 사용하기 위해 다양한 방법이 있지만, 이렇게 처음 습관이 들어서 이 방법이 편해 위 방법을 사용중임.


/* USER CODE BEGIN 2 */

printf("test test \r\n");

/* USER CODE END 2 */

 


Run을 해주면 test test 문구와 LED 4개가 동시에 점등되고 있는것을 알 수 있다.
LED 라벨을 STEP1 ~ STEP4 로 해놨고, 위에서부터 STEP1 (PI12)로 설정해놓았다.



LED와 Printf 문구가 보이지 않는 경우가 있는데, Debug를 해서 boot 문에서 못 빠져나오는 경우이다.
M4 코어가 살아나지 않아서 생긴문제로 두 가지 방법이 있는데
https://youtu.be/Zwylu6ma9gU?si=A6aXEr6xomKE-8KM

그 중에 하나로 위 방법을 이용하면 해결된다.

728x90

'Study > 개발(STM,RASP,ARDUINO)' 카테고리의 다른 글

STM32H747I-DISCO 다뤄보기  (3) 2025.08.04
Arduino - OV7670 카메라  (0) 2024.02.07
[KiCAD] Arduino UNO R3 빌드 Fin  (1) 2023.12.18
[KiCAD] Arduino UNO R3 빌드 #2  (0) 2023.11.10
[KiCAD] Arduino UNO R3 빌드 #1  (0) 2023.11.01