UART : 범용 동기식/비동기식 송수신기
- 8-N-9600-1 : 8bit-No parity-9600bps-1 Stop bit
1) 폴링방식 : 계속 검사(예의주시)를 하면서 상태변화를 확인하는 방식 ⇒ 비효율적
인터럽트방식과 반대
2) printf()
- printf() 로 출력 ⇒ 표준출력장치에서 출력할 수 있는 환경으로 변환
- #include <stdio.h> 추가
- 다음 추가
- float 형 변수도 출력하고 싶다면? 프로젝트 우클릭 → 특성 → C/C++ Build → Settings → Tool Settings → Miscellaneous → Other options : -u _printf_float 입력 → 적용 → 확인
- 사실 printf 는 처리시간도 오래걸리고 무거운 함수임 ⇒ trueStudio에서는 tiny_printf 라는 함수를 지원해줌 (설정법은 따로 있음, 찾아보거나 2-2 장 뒷부분 참고) ⇒ 더 가볍고 효율적 But 단점 : float 과 같은 실수는 못씀
- trueSTUDIO에서 printf로 출력하는 방법
3) UART Rx Interrupt (수신인터럽트) - NVIC 추가
uart 내의 인터럽트도 다양한 종류로 있기 때문에 수신인터럽트를 몇가지 코드를 통해 활성화시켜주어야함 - stm32f4xx_it.c 다음 함수에서 시작 HAL_UART_IRQHandler ⇒ UART_Receive_IT ⇒ HAL_UART_RxCpltCallback

HAL 드라이버와 패러럴의 다른점
HAL_UART_RxCpltCallback : 한 바이트마다 인터럽트가 수행이 되고 버퍼에 차곡차곡 쌓여서 한 패킷 사이즈만큼 다 쌓이면 버퍼에 있는 내용 검사 ⇒ 10 바이트짜리 변수 ⇒ 10번쌓여야 한 번 수행
USART3_IRQHandler : 변수 자체를 배열버퍼로 데이터를 받아올 수 있음 ⇒ 10 바이트짜리 변수 ⇒ 10번이면 10번 수행
'FW > STM32' 카테고리의 다른 글
| 06-1_PWM : Timer 을 이용한 PWM (1) | 2023.02.21 |
|---|---|
| 05_EXTI (외부인터럽트) (3) | 2023.02.21 |
| 04_Timer_Interrupt (1) | 2023.02.21 |
| 03_Character_LCD (1) | 2023.02.21 |
| 01_GPIO (0) | 2023.02.21 |