6장 - 예제2

조재훈·2023년 6월 16일

USART를 인터럽트 방식으로 사용

  • tera term 통신 속도 115,200 bps, 8비트 데이터, None 페리티, 1 Stop bit

Pin Map

  • ETH Disabled
  • USART3 interrupt enabled
  • 통신속도 확인

코딩

stm32f4xx_it.h

void UART_Interrupt_Processing(UART_HandleTypeDef *huart);

stm32f4xx_it.c

void USART3_IRQHandler(void)
{
  /* USER CODE BEGIN USART3_IRQn 0 */

  /* USER CODE END USART3_IRQn 0 */
  HAL_UART_IRQHandler(&huart3);
  /* USER CODE BEGIN USART3_IRQn 1 */
  UART_Interrupt_Processing(&huart3);
  /* USER CODE END USART3_IRQn 1 */
}

main.h

#define TRUE 1
#define FALSE 0

main.c

#include "stdbool.h"
#include <stdio.h>

unsigned char Receive_Buffer[1];
bool RxFlag;
int _write(int file, unsigned char* p, int len)
{
	HAL_StatusTypeDef status = HAL_UART_Transmit(&huart3, p, len, 100);
	return (status==HAL_OK ? len : 0);
}

  __HAL_UART_ENABLE_IT(&huart3, UART_IT_RXNE);
  __HAL_UART_ENABLE_IT(&huart3, UART_IT_TC);
  printf("Example_6_2 Echo UART\r\n");

  while (1)
  {
	  if(RxFlag)
	  {
		  printf("rx=%d[%c]\r\n", Receive_Buffer[0], Receive_Buffer[0]);
		  RxFlag=FALSE;
	  }
  }

void UART_Interrupt_Processing(UART_HandleTypeDef *huart)
{
	if(huart->Instance==huart3.Instance)
	{
		if(HAL_UART_Receive_IT(&huart3, Receive_Buffer, 1)== HAL_OK)
		{
			RxFlag=TRUE;
		}
	}
}

Tera Term



profile
맨땅에 헤딩. 인생은 실전.

0개의 댓글