Uart Interrupt로 LED를 On/Off 할 수 있게 되었다.
https://pilimage.tistory.com/20
이제 ring buffer를 이용하여 인터럽트를 수신해보자
https://pilimage.tistory.com/21
ring_buffer.h를 Core의 Inc 폴더에 ring_buffer.c를 Core의 Src폴더에 넣고 main에 ring_buffer.h를 include 한다.
ring_buffer를 이용하여 데이터를 수신할 rx_buffer와 수신 받은 데이터를 pop하여 저장하는 rx_frame을 만든다.
그 후 메인에 ring_buf를 초기화 시킨다.
이제 준비는 모두 끝났다.
HAL_UART_RxCpltCallback 함수를 위와 같이 수정하였다.
PC와 연결된 uart1번으로 데이터가 수신되면 받은 데이터를 ring_buf에 push 한다.
PC 콘솔에 입력한 데이터를 출력하기 위해서 HAL_UART_Transmit을 하였고,
HAL_UART_Receive_IT를 통해 다음 데이터 수신을 대기한다.
그리고 메인 함수의 루프에서 동작하다 use_console함수를 다음과 같이 수정하였다.
메인 루프에서 반복적으로 ring_buffer에 데이터가 있으면 pop하여 rx_frame에 넣는다.
데이터의 끝을 알리는 \r나 \n이 아니면 rx_frame의 idx를 증가시키며 ring_buffer에서 꺼낸 데이터를 넣는다.
데이터의 끝을 알리는 \r나 \n을 만나면 데이터에 맞게 LED를 On / Off 시키도록 수정하였다.
이제 LED를 Uart를 이용하여 On/Off 할 수 있게 되었다...
단순히 LED를 On/Off 하는 것 말고도 LED를 서서히 밝아지고 서서히 어두워지게 할 수 있을까?
LED Dimming / LED Dimmer 라고 하는 기능을 구현해보자
언제 ?
다음글에...
끝
'지식저장소 > STM32F746' 카테고리의 다른 글
[C/STM32] 7 . LED 제어 - PWM 생성 (0) | 2022.04.14 |
---|---|
[C/STM32] 5. LED ON/OFF - Uart Interrupt제어 (0) | 2022.03.22 |
[C/STM32] 4. LED ON/OFF - Uart Polling 제어 (1) | 2022.03.17 |
[C/STM32] 3. LED ON/Off - 버튼 채터링 추가 (2) | 2022.02.25 |
[C/STM32] 2. LED ON/OFF - 버튼 제어 추가 (2) | 2022.02.24 |