ST/STM32F746DIS

STM32F746G DISCOVERY - printf()를 이용하여 UART로 문자열 출력

engineer4ever 2025. 4. 19. 11:29

 

MCU
STM32F746G DISCOVERY(ST)
IDE
Atollic(TrueSTUDIO), STM32CubeMX
목표
printf()를 이용하여 UART로 문자열 출력

 

- STM32F746G DISCOVERY에서는 Uart1과 Uart6을 이용 가능

 

- Uart1은 디버거인 STM103과 연결되어 디버거의 VCP(Virtual Com Port)를 이용하여 별도 장비 없이 Uart를 이용 가능

- Uart6은 Arduino D0/D1 핀과 연결

 

1. STM32F746 DISCOVERTY Uart1 관련 회로도

 

2. STM32CubeMX : UART-Polling 설정

- 'Pinout & Configuration' Tab으로 이동

1) Connectivity 선택

2) USART1 항목 선택

- Mode : Asynchronous, Synchronous 등

- Hardware Flow Control :Disable

- PB6(USART1_TX), PB7(USART1_RX)가 자동 할당(녹색 표시)됨

PB6(USART1_TX) → PA9(USART1_TX)로 변경

 

- Parameter Settings 확인

1) Baud Rate : 115200 Bits/s

2) Word Length : 8 Bits

3) Parity : None

4) Stop Bits : 1

 

- NVIC Settings 확인

1) NVIC 선택

2) USART1 global interrupt : Enabled에 체크

- GENERATE CODE 클릭

 

- STM32CubeMX Version 5.1.0에서 아래와 같은 에러가 뜨는데 그냥 무시하고 써도 된다는 의견이 있다.

Is there any way to disable GFXSimulator in CubeMx 5.1? For STM32F429 CubeMx often displays warnings that some simulation settings are incorrect even for projects which have nothing to do with graphics.

Cookie Notice Cookies and similar technologies enable us to provide you with an optimized user experience and functionality of our website. They also help us to monitor its performance and to make our advertising and marketing relevant to you. You have full control over which cookies are set by clic...

community.st.com

- 무시하고 진행


3. ATOLLIC 실행

- USART1_IRQHandler 생성됨

void USART1_IRQHandler(void)
{
	/* USER CODE BEGIN USART1_IRQn 0 */

	/* USER CODE END USART1_IRQn 0 */
	HAL_UART_IRQHandler(&huart1);
	/* USER CODE BEGIN USART1_IRQn 1 */

	/* USER CODE END USART1_IRQn 1 */
}
 

- 표준 출력 변경 : 표준 출력이 Terminal I/O에 연결 되어 있기 때문에 아래를 추가하여 표준 출력을 변경 해야 함

/* Private user code ---------------------------------------------------------*/
/* USER CODE BEGIN 0 */
int _write(int FD, char *buffer, int len)
{
	HAL_UART_Transmit (&huart1, (uint8_t*)buffer, len, 500);
	return len;
}
/* USER CODE END 0 */
 

- printf() : 사용 하여 메시지 출력

  /* USER CODE BEGIN 2 */
  printf("STM32F746 DISCOVERTY printf() TEST.\r\n");
  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
 

 

- USART1은 디버거인 STM103과 연결되어 디버거의 VCP(Virtual Com Port)를 이용하여 별도 장비 없이 Uart를 이용할수 있다. 내컴퓨터 - 장치 관리자로 들어가 몇번 Com Port에 할당 되었는지 확인

- ATOLLIC - Debug로 들어가서 새 Terminal 시작

- 위에서 확인한 COM Port와 Setting값 설정

- Terminal에서 'STM32F746 DISCOVERTY printf() TEST.' 문구 확인 가능