티스토리 뷰

카테고리 없음

[stm32] led & uart (interrupt)

별의 별 2022. 7. 28. 13:01

[stm32] led & uart (interrupt)

led와 uart통신을 interrupt 방식으로 해보기( no 세마포어)


2022.07.12 - [stm32 & rtos] - [stm32] rtos uart semaphore (interrupt)

 

[stm32] rtos uart semaphore (interrupt)

[stm32] rtos uart semaphore rtos로 uart통신 interrupt하는데 semaphore를 이용하기 이건 칩에 맞게 설정합니다. -- rtos 설정, led설정, uart 설정(interrupt설정 포함) https://www.freertos.org/a00124.ht..

bbsy.tistory.com

여기서 별로 다른 게 없다. 난 먼저 세마포어 쓰지 않고 하고 나중에 세마포어를 이용했다.

그러니 따지고 보면 이게 더 기초다.

 

 

1.

//함수
HAL_UART_Transmit_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size);

//사용예시
HAL_UART_Receive_IT(&huart1, &rx_data, 1);

이 함수로 pc에서 size만큼 받으면 인터럽트하게 한다.

main.c에 넣어주자!

 

 

2. 인터럽트 콜백함수 호출

callback함수 앞에 weak가 붙어서 안에 내용을 원하는 데로 바꾸면 된다. 

void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart){
	HAL_UART_Receive_IT(&huart4, &data, 1);                     // 1개 수신 시 인터럽트 발생
	HAL_UART_Transmit(&huart4, &data, sizeof(data), 10);       //받으 데이터를 전송 
    }

이렇게 main.c의 main문 위에 다가 이 콜백함수를 만들어주면 interrupt끝!

댓글