embeded/Cortex-M3 STM2025. 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)
HAL_StatusTypeDef HAL_UART_Transmit_DMA(UART_HandleTypeDef *huart, const uint8_t *pData, uint16_t Size)

 

TX 완료시에는 인터럽트가 뜨도록 해서 추가로 전송할지 정도만 구현하면 된다.

void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart)
{
}

 

[링크  https://blog.naver.com/chandong83/222863872771]

'embeded > Cortex-M3 STM' 카테고리의 다른 글

stm32 cubeide ioc gen  (0) 2025.06.18
stm32 pwm 주파수 계산  (0) 2025.06.05
stm32 timer로 gpio 토글하기  (0) 2025.06.05
stm32 pwm interrupt  (0) 2025.06.02
stm32 boot loader(shipping)  (0) 2025.05.13
Posted by 구차니