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;
}
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
Post a Comment