전자/임베디드 시스템
STM32의 HAL_SPI_TransmitReceive_IT 함수 동작원리
Begi
2021. 6. 30. 21:47
반응형
HAL_SPI_TransmitReceive_IT 함수이 실행되면 SPI 인터럽터가 실행되면서 SPI에 데이터를 쓰고 읽는다. 매 바이트마다 인터럽터 함수가 실행된다.
SPI 인터럽터 함수는 stm32l1xx_it.c 파일에 있다.
void SPIx_IRQHandler(void)
{
HAL_SPI_IRQHandler(&SpiHandle);
}
인터럽터가 발생하면 실행되는 HAL_SPI_IRQHandler 함수는 stm32l1xx_hal_spi.c 파일에 정의되어 있다. 이 함수에서 SPI에 데이터를 쓰고 읽는다.
HAL_SPI_IRQHandler 함수에서 송수신이 종료되면 HAL_SPI_TxRxCpltCallback 함수를 호출하고 에러가 발생하며 HAL_SPI_ErrorCallback 함수를 호출한다.
HAL_SPI_TransmitReceive_IT는 SPI 인터럽터를 사용하기 때문에 SPI 인터럽터의 우선순위가 낮으면 정확한 시간에 데이터를 읽고 쓰지 못해 Overrun 등의 에러가 발생할 수 있다.
반응형