먼저 환경은 Ubuntu 20.04에 NUCLEO-F411RE를 사용
1. USART 설정
먼저 NUCLEO-F411RE는 USART 1, 2, 6이 존재하는데, USART2는 ST-LINK로 통신이 가능하기 때문에 별도의 통신하드웨어가 필요 없다.
만약 ST-LINK가 없는 board 같은 경우 TX와 RX, Vcc GND를 연결시켜주어야 한다.
USART에서는 Polling, interrupt, DMA가 있는데,
간단히 설명하자면 Polling은 신호를 특정 주기로 하염없이 감시/기다리는 것이고 interrupt는 이벤트로 인한 통신, DMA는 interrupt가 무수한 신호가 전달될 때 CPU의 가용시간을 과도하게 잡아먹을 수 있는데, DMA controller를 이용하여 CPU의 가용시간을 줄여주는 방식이다. 자세한 내용은 아래 링크에서 확인한다.
2021.12.23 - [0. 이론] - DMA란? (Direct Memory Access?)
이 글에서는 Polling, interrupt, DMA를 고민할 정도의 내용은 아니니 기본적인 Polling을 사용한다.
[Connectivity]에서 USART2의 [Mode]를 "Asynchronous"를 선택
2. 소스코드 작성
"Generate Code"를 실행하고 돌아와 main.c의 상단에 include와 함수를 정의
#include <stdio.h>
int __io_putchar(int ch)
{
(void) HAL_UART_Transmit(&huart2, (uint8_t*) &ch, 1, 100);
return ch;
}
테스트를 위해 main.c의 while안에 printf문을 1초마다 출력
while (1)
{
printf("HELLO\n");
HAL_Delay(1000);
}
3. 실행
Linux에서는 아래의 명령어로 확인이 가능하나, 간편하게 putty, teraterm 등 Serial 통신 프로그램으로 진행한다.
+) 편리한 로그 출력 전처리기 만드는 방법
2023.03.29 - [프로그래밍/C,C++,C#] - [C/C++] 간편하게 LOG 남기기(feat. 가변인자)
'프로그래밍 > STM32' 카테고리의 다른 글
[STM32] Timer 설정하기(feat. 이론) (0) | 2023.10.07 |
---|---|
[STM32] CPU 온도 측정하기 (0) | 2023.09.30 |
[STM32] EXTI(External Interrupt) 제어 (0) | 2023.09.24 |
[STM32] STM32CubeMX로 CMake설정하기 (0) | 2023.09.10 |
[STM32] VSCode 에서 STM32 디버깅하기(.vscode) (0) | 2023.09.03 |
댓글