#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 */
}
반응형