embeded/Cortex-M3 STM
stm32 uart tx dma
구차니
2025. 6. 18. 11:09
stm32 에서 uart tx를 dma로 구현하기
connectivity - usart 에서
DMA Settings에서 Add
TX를 DMA로 할거니까 USART1_TX를 선택
uart니까 우선순위가 높을 이유도 없으니 그냥 기본으로 하고, 바이트 단위로 증가가 기본 설정으로 잡힌다.
DMA 인터럽트와 usart 인터럽트를 활성화 하고
보내는 함수 자체는 별로 차이가 없긴한데,
_DMA가 붙은 녀석을 이용해서 버퍼가 차면 비울만큼 전송하도록 명령을 보내고
HAL_StatusTypeDef HAL_UART_Transmit(UART_HandleTypeDef *huart, const uint8_t *pData, uint16_t Size, uint32_t Timeout)
|
TX 완료시에는 인터럽트가 뜨도록 해서 추가로 전송할지 정도만 구현하면 된다.
void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart) { } |