MCU
|
STM32F746G DISCOVERY(ST)
|
IDE
|
Atollic(TrueSTUDIO), STM32CubeMX
|
목표
|
HAL driver를 사용하여 UART DMA mode 입출력 Test(Receive Overrun 방지)
|
- UART Firmware 작성시 아래와 같이 크게 세가지 모드로 구분 할 수 있음
- 각 mode별로 입출력 Test
1. Polling
2. Interrupt
3. DMA
이번 페이지에서는 DMA mode 사용
3. STM32CubeMX : UART-DMA 설정
- Configuration은 STM32F746 DISCOVERY - printf()를 이용하여 UART로 문자열 출력 참고
- DMA Settings 확인
1) DMA 선택
2) Add 클릭
3) USART1_RX : Mode : Circular, Increment : Memory

- GENERATE CODE 클릭
- ATOLLIC : main.c
- 터미널에서 Keyboard 입력을 받아 다시 Terminal로 출력 코드 작성
- 필요한 변수 선언
#define RX_MAX 1
uint8_t rcv_data[RX_MAX];
- while() 작성
/* Infinite loop */
/* USER CODE BEGIN WHILE */
HAL_UART_Receive_DMA(&huart1, rcv_data, RX_MAX);
while (1)
{
HAL_Delay(50);
if(rcv_data[0])
{
printf("Rx OK = %c\r\n", rcv_data[0]);
rcv_data[0] = 0x00;
}
if(__HAL_UART_GET_FLAG(&huart1,UART_FLAG_ORE))
{
printf("UART1 Overrun Error occurred.\r\n");
__HAL_UART_CLEAR_IT(&huart1,UART_CLEAR_OREF);
}
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
'ST > STM32F746DIS' 카테고리의 다른 글
STM32F746G DISCOVERY - TIM(IC, OC, PWM) (0) | 2025.04.19 |
---|---|
STM32F746G DISCOVERY - TIMER (0) | 2025.04.19 |
STM32F746G DISCOVERY - UART(Polling, Interrupt) (0) | 2025.04.19 |
STM32F746G DISCOVERY - printf()를 이용하여 UART로 문자열 출력 (0) | 2025.04.19 |
STM32F746G DISCOVERY - GPIO(EXTI) (0) | 2025.04.19 |