Louie NRT Story

[STM32 ] printf 사용법 본문

전기차충전기

[STM32 ] printf 사용법

hyeok0724.kim@gmail.com 2021. 6. 18. 10:33
반응형

작성일: 21년 8월 1일

 

Index

1. printf 함수 쓰면 호출 되는 함수

2. __io_putchar 함수 재정의

3. 새로운 방식

 

 

1. printf 함수 쓰면 호출 되는 함수

- syscalls 에서 "_write" 함수가 호출 됨

 

 

2. __io_putchar 함수 재정의

- 느낌상 _write 함수를 재정의 해야하는 것 처럼 보이는데 지금까지 본 코드들에서는 __io_putchar 함수를 재정의 하였음. 이건 조금 더 공부해봐야겠음.

- 코드 설명 해주면 현재 쓰고있는 보드 설계상 UART_EN 포트가 ON이 되어야만 데이터를 보낼 수 있음. UART_EN 포트가 OFF 일때는 데이터 수신만 가능함

- UART_EN을 ON으로 변경해주고 1byte 데이터를 보내고 UART_EN을 OFF로 변경해줌

- '\n' 일때 '\r'을 써줌으로써 printf("Hello\n\r"); -> printf("Hello\n") 으로 변경이 가능함 

- 지금 보니깐 보낼때마다 GPIO 포트를 변경하므로 비효율적임

- 다시 확인해보고 수정해야함

int __io_putchar(int ch)
{
	HAL_GPIO_WritePin(UART_01_EN_GPIO_Port, UART_01_EN_Pin, GPIO_PIN_SET);
	if(ch == '\n'){
		HAL_UART_Transmit(&huart1, (uint8_t *)&"\r", 1, 100);
	}
	HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 100);
	HAL_GPIO_WritePin(UART_01_EN_GPIO_Port, UART_01_EN_Pin, GPIO_PIN_RESET);
	return ch;
}

 

 

3. 새로운 방식

반응형
Comments