일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 디자인패턴
- 에버온
- homeassistant
- 파이썬
- 전기차충전
- 급속충전기
- 서버리스
- 전기차
- flask
- 완속충전기
- dynamodb
- 홈어시스턴트
- YMODEM
- 플라스크
- STM32
- lambda
- 안드로이드
- 보안
- IOT Core
- raspberry
- 전기차충전기
- OCPP
- esp8266
- thread
- 라즈베리파이
- Android
- 충전기
- 펌웨어
- AWS
- everon
Archives
- Today
- Total
Louie NRT Story
[STM32 ] printf 사용법 본문
반응형
작성일: 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. 새로운 방식
반응형
'전기차충전기' 카테고리의 다른 글
[강의] Electron 채팅 어플리케이션 개발 #1 - Todo (0) | 2021.06.20 |
---|---|
[전기차 충전기] 급속 충전기 통신 프로토콜 - Todo (0) | 2021.06.19 |
[전기차충전기] 충전기 DIY - Todo (0) | 2021.06.11 |
[전기차충전기] 차지포인트 (0) | 2021.06.11 |
[electron] Serial Test Application - Todo (0) | 2021.06.11 |
Comments