[STM32] UART Baudrate Change 기능 구현

2023. 5. 16. 20:25개발로그/STM32

반응형

개요

STM32에서 UART를 사용하여 LCD를 제어 하는 어플리케이션을 구현 하는 중, UART Baudrate를 어플리케이션이 동작하는 동안 동적으로 변경해야 할 필요가 있어 해당 함수를 구현함

 

( 참고로 해당 함수는 STM32F407VGTX 기반 보드에서 동작 )

 

 

UART Baudrate 변경 함수 

  • STM32의 LL(Low-Level)라이브러리를 사용하여 구현
  • STM32F407VGTX MCU의 UART6는 PCLK2 클럭을 사용하여 아래와 같이 구현
    • UART번호에 따라 해당하는 PCLK클럭을 파라미터로 사용해야 함
UART_HandleTypeDef huart6;


void HAL_UART6_SetBaudRate(uint32_t baudRate)
{
    LL_RCC_ClocksTypeDef rcc_clocks;

    LL_RCC_GetSystemClocksFreq(&rcc_clocks);

    LL_USART_SetBaudRate(huart6.Instance, rcc_clocks.PCLK2_Frequency, LL_USART_OVERSAMPLING_16, baudRate );
}

 

기타

LL_RCC_ClocksTypeDef를 찾을 수 없다는 에러가 나오는 경우, 아래와 같이 RCC를 LL(Low-Level) 라이브러리를 사용하겠다고 설정

반응형

'개발로그 > STM32' 카테고리의 다른 글

[STM32] UART DMA 이슈  (0) 2023.05.23
[STM32]CubeIDE USE_HAL_UART_REGISTER_CALLBACK 설정 법  (0) 2023.05.17
[STM32] HAL과 LL 라이브러리 차이  (0) 2023.05.15