반응형
STM32의 HAL에서 HAL_I2C_Master_Transmit_IT또는 HAL_I2C_Master_Transmit_DMA와 같은 함수를 사용할 때 이상한 데이터가 송수신되는 경우가 있다.
위와 같은 함수에서 전달되는 변수는 글로벌 변수를 사용해야 한다. 만약 로컬 변수를 사용하면 로컬 변수가 스택에서 해제되면 데이터가 유지되지 않기 때문에 이상한 데이터가 송수신 될 수 있다.
인터럽터나 DMA는 함수 실행이 끝나도 계속 동작하기 때문에 송수신할 데이터를 글로벌 변수에서 계속 유지하고 있어야 한다.
반응형
'전자 > 임베디드 시스템' 카테고리의 다른 글
STM32 HAL DMA 사용시 주의사항 (0) | 2021.07.03 |
---|---|
STM32 개발 라이브러리 종류 (0) | 2021.07.03 |
STM32의 HAL_SPI_TransmitReceive_IT 함수 동작원리 (0) | 2021.06.30 |
PL2303 드라이버 (0) | 2021.06.30 |
SPI의 CPOL과 CPHA (0) | 2021.06.29 |
댓글