티스토리 뷰
이번 포스트는 ST 사의 STM32F407VET6 보드를 이용하여 UART 통신을 통해 PC 모니터에 Hello World!를 출력해보겠습니다.
먼저 CubeMX를 실행합니다.
그럼 먼저 UART 통신을 해야 하니 당연히 UART 설정을 해주세요.
왼쪽 Peripherals 탭에 USART1을 선택하여 다음과 같이 설정해줍니다.

비동기 방식으로 통신할 것이므로 Mode를 Asynchronous로 설정해줍니다.
설정하면 오른쪽에 USART1_RX와 USART1_TX핀이 설정된 것을 볼 수 있습니다. (저는 디버깅 용으로 PE6를 GPIO_OUTPUT을 설정하여 LED를 부착하였습니다.)
PC에서 STM32F4 보드로부터 수신한 데이터를 확인하기 위해 USB to TTL 모듈의 RX핀과 TX핀을 보드의 TX(PA10), RX(PA9) 핀과 연결해줍니다.

USB to TTL 모듈 - PC와의 USART 통신을 가능케 한다.(디바이스마트나 메카솔루션 등에서 쉽게 구할 수 있습니다.)
Pinout 탭 설정이 끝났다면 클럭 설정을 위한 Clock Configuration 탭으로 넘어갑니다.
현재 많은 작업을 수행하는 것이 아니라 클럭 값은 크게 상관이 없지만 저는 HSI(High Speed Internal : 내부 고속 클럭)을 선택하여 PLL(클럭 증폭 기능 소유)을 거쳐 최종적으로 System Clock Mux에서 PLLCLK(증폭된 클럭)을 선택하였습니다.
(저는 32MHZ 클럭을 사용했습니다. HCLK(MHz) 탭에 32를 입력하면 아마 자동적으로 위와 같이 세팅될 것입니다.
Clock Configuration 탭 설정이 끝났다면 Configuration 탭으로 이동합니다.
Configuration 탭에서 USART1 버튼을 클릭하여 USART1에 대한 설정을 해줍니다.

저는 부가적으로 세팅했던 LED용 핀 PE6에 User Label을 붙여주었습니다.
User Label 탭에 편의를 위하여 LED라고 설정했습니다.(Configuration 탭에서 GPIO 버튼을 클릭하면 위와 같은 창이 뜹니다.)
이제 모든 설정이 끝났으므로 Generate Code를 해줍니다.
우리가 소스코드를 작성할 파일은 main.c이므로 main.c로 이동해줍니다.
데이터를 전송할 전송 버퍼의 크기(BUFFERSIZE)와 전송 버퍼 포인터(tx_buffer)를 선언해줍니다.
/* USER CODE BEGIN PV */ /* Private variables ---------------------------------------------------------*/ #define COUNTOF(__BUFFER__) (sizeof(__BUFFER__)/sizeof(*(__BUFFER__))) #define BUFFERSIZE(buffer) (COUNTOF(buffer)) uint8_t tx_buffer[] = "Hello World!\r\n";
/* USER CODE END PV */
데이터를 전송할 버퍼를 만들었다면 이제 실제로 전송을 해야겠죠?
아래는 UART 전송 코드 입니다.
/* USER CODE BEGIN WHILE */ while (1) { HAL_Delay(1000); /* 1초 대기 */ /* PC로 tx_buffer 내용 전송 */ /* 전송이 성공하면 HAL_OK 리턴 */ if(HAL_UART_Transmit(&huart1, (uint8_t*)tx_buffer, BUFFERSIZE(tx_buffer), 1000) == HAL_OK); { /* 전송 확인하기 위해 0.5초 동안 LED 깜빡이기 */ HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_SET); HAL_Delay(500); HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_RESET); } /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ } /* USER CODE END 3 */
코드 작성이 끝났으니 이제 보드에 Program(다운로드) 해주시면 됩니다.
Programming이 끝났다면 Debugging 버튼을 클릭하여 실제 보드에 Programming된 Firmware를 구동시킵니다.
그리고 장치 관리자를 실행시켜 현재 USB to TTL 모듈이 몇 번 포트에 연결되어 있는지 확인합니다.
저는 COM5에 연결되어 있네요.
그리고, TeraTerm 같은 Terminal 프로그램을 실행시켜 Hello World! 출력을 확인해봅니다.
(https://osdn.net/projects/ttssh2/releases/ 에서 다운로드 받을 수 있습니다.)

이제, OK 버튼을 누르면 Hello World!가 STM32F4로부터 전송되어 PC에 출력되는 것을 볼 수 있습니다.

LED Blinking 시간까지 합쳐서 약 1.5초 간격으로 출력되네요.
이상 STM32CubeMX를 이용한 Hello World! 출력하기였습니다!!
'STM32 > SPI' 카테고리의 다른 글
STM32CubeMX SPI 이론과 실습 (2) | 2018.05.08 |
---|
- Total
- Today
- Yesterday
- c
- C++
- compile
- teraterm
- computer_science
- DMA
- Effective C++
- 초기화 리스트
- DCM
- 드론
- 컴퓨터구조
- pwm
- PID
- 오실로스코프
- UART
- 로그
- SPI
- 칼만필터
- 컴파일
- 터미널
- 고도필터
- 드론개발
- 멤버 초기화 리스트
- STM32
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |