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) { } |
'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 |