전자/임베디드 시스템
STM32 HAL 인터럽터와 DMA 함수 사용시 주의사항
Begi
2021. 7. 1. 23:17
반응형
STM32의 HAL에서 HAL_I2C_Master_Transmit_IT또는 HAL_I2C_Master_Transmit_DMA와 같은 함수를 사용할 때 이상한 데이터가 송수신되는 경우가 있다.
위와 같은 함수에서 전달되는 변수는 글로벌 변수를 사용해야 한다. 만약 로컬 변수를 사용하면 로컬 변수가 스택에서 해제되면 데이터가 유지되지 않기 때문에 이상한 데이터가 송수신 될 수 있다.
인터럽터나 DMA는 함수 실행이 끝나도 계속 동작하기 때문에 송수신할 데이터를 글로벌 변수에서 계속 유지하고 있어야 한다.
반응형