stm32 디버그 USART 및 printf 함수 출력

Debug UART - UART 6
UART Parameter : 8 - N - 1 - 921600 으로 설정
Data bit : 8 bit   Stop bit : 1 bit
Parity : None     Baud : 921600bps

MX_USART6_UART_Init();

while(1)
{
 LL_UART_TransmitData(USART6, 'A');
 HAL_Delay(1000);
}

#인터럽트 설정
LL_USART_EnableIT_RXNE(USART6);

#인터럽트 함수는 stm32f4xx_it.c에 정의되어있다.

uint8_t uart6_rx_flag = 0;
uint8_t uart6_rx_data = 0; => maing.c에 복사하고 앞에 extern을 붙여준다.

void USART6_IRQHandler(void)
{
 /* USER CODE BEGIN USART6_IRQn 0 */
 if(LL_USART_IsActiveFlag_RXNE(USART6))
 {
  LL_USART_ClearFlag_RXNE(USART6);
  uart6_rx_data = LL_USART_ReceiveData8(USART6);
  uart6_rx_flag = 1;
 }
}

#main 부분
while(1)
{
 if(uart6_rx_flag == 1)
 {
  uart6_rx_flag = 0;
  LL_USART_TransmitData8(USART6, uart6_rx_data);
 }
}

#printf 함수로 출력하는 방법
int _write(int fil, char* p, int len) => printf함수가 호출되면 호출되는 함수
{
 for(int i = 0; i < len; i++)
 {
  LL_USART_TransmitData8(USART6, *(p+i));
  HAL_Delay(1); => delay를 줘야 출력이 더 잘된다.
 }
 return len;
}

Comments