2019. 6. 29. 23:13ㆍ임베디드/32F429IDISCOVERY
UART 수신 인터럽트를 사용하기 위해선 반드시 HAL_UART_Receive_IT 함수를 사용해야만 한다
결국 수신이 들어간다면 USARTx_IRQHandler를 호출하게 될 것이고, 또 안에서는 Callback 함수를 호출하게 된다
그런데 주의할 점은 Callback 함수는 HAL_UART_Receive_IT의 세 번째인자인 size 바이트만 수신해야만 호출된다. 즉, 한 바이트씩 들어갈 때마다 USARTx_IRQHandler는 호출이 되지만 실행되어야할 Callback 함수까지는 이어지지 못한다
예) 10바이트 버퍼를 잡고, Callback에서는 PG13을 toggle하고, IRQ(한 바이트 수신)에서는 PG14를 toggle하는 소스코드
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
/* Prevent unused argument(s) compilation warning */
HAL_GPIO_TogglePin(GPIOG, GPIO_PIN_13);
HAL_UART_Receive_IT(&huart1, rxbuf, 10);
}
void USART1_IRQHandler(void)
{
/* USER CODE BEGIN USART1_IRQn 0 */
/* USER CODE END USART1_IRQn 0 */
HAL_UART_IRQHandler(&huart1);
/* USER CODE BEGIN USART1_IRQn 1 */
HAL_GPIO_TogglePin(GPIOG, GPIO_PIN_14);
/* USER CODE END USART1_IRQn 1 */
}
'임베디드 > 32F429IDISCOVERY' 카테고리의 다른 글
32F429IDISCOVERY HAL_I2C 제어 (0) | 2019.07.02 |
---|---|
NVIC 선점 우선순위 실습 (0) | 2019.07.01 |
32F429IDISCOVERY TrueSTUDIO에서 printf & tiny_printf 사용하기 (0) | 2019.06.29 |
32F429IDISCOVERY TrueSTUDIO에서 SPL로 GPIO EXTI 제어 (0) | 2019.06.29 |
NVIC와 EXTI (0) | 2019.06.29 |