본문 바로가기

[ST_MICRO]/STM32G0

#STM32G030 EVM - UART 테스트 (STM32CubeIDE 에서 printf 사용하기)

#STM32G030 EVM -  UART 테스트 (STM32CubeIDE  에서 printf 사용하기)





STM32g030F6에는 3채널의 UART포트가 있고 UART1(Tx-PB3, Rx-PB7) 포트가 보드상의 UART커넥터에 할당되어 있다.





STM32CubeIDE에서 새로운 프로젝트를 생성하고 UART탭의 핀맵과 보레이트 등을 설정한다.






STM32CubeIDE 로 코드 생성하면 자동 코드가 생성되고 기존 STM32 HAL코드와 동일하게 작성하면 UART 통신 테스트를 할 수 있다.



int main(void)
{
  /* USER CODE BEGIN 1 */
  /* USER CODE END 1 */
  /* MCU Configuration--------------------------------------------------------*/
  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();
  /* USER CODE BEGIN Init */
  /* USER CODE END Init */
  /* Configure the system clock */
  SystemClock_Config();
  /* USER CODE BEGIN SysInit */
  /* USER CODE END SysInit */
  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_USART1_UART_Init();
  /* USER CODE BEGIN 2 */
  HAL_UART_Transmit( &huart1, "STM32G-SSM EVM", 1, 100);
  /* USER CODE END 2 */
  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */
    /* USER CODE BEGIN 3 */
  }
  /* USER CODE END 3 */

}




STM32CubeIDE  에서 printf 사용하기


STM32CubeIDE 에서 printf 를 사용하려면 _wrte 함수를 재 정의 해 주면 된다.


#define hUART           huart1
int _write( int32_t file , uint8_t *ptr , int32_t len )
{
    /* Implement your write code here, this is used by puts and printf for example */
    for ( int16_t i = 0 ; i < len ; ++i )
    {
        HAL_UART_Transmit( &hUART, ptr++, 1, 100);
    }
    return len;

}




printf 로 간단히 카운트 값을 증가 하는 코드 작성해서 테스트 해 보니 잘 동작한다.


  while (1)
  {
    /* USER CODE END WHILE */
    printf("%d\r\n", cnt++);
    HAL_Delay(100);
    /* USER CODE BEGIN 3 */

  }


반응형