Pages Menu
TwitterRssFacebook
Categories Menu

Posted by on Ago 2, 2019

stm32cubemx uart 예제

헤더 stm32f7xx_hal_uart.h를 엽니다. 파일의 끝에서, 당신은 IO 작업과 직렬 함수를 찾을 수 있습니다 아래 표시된. 이 예제는 `printf`와 `sprintf`를 사용하는 방법에 대한 참조를 위해 cplusplus.com 추출되었습니다 이러한 기능 간의 차이점은 매우 분명합니다 – 예를 들어이 두 가지 데이터 교환을 위해 DMA 장치를 사용하여 🙂 이름을 보면 : 다음, 메인 루프에서, 컴퓨터에 데이터를 보내려면 다음 명령을 예로 들 수 있습니다. C 언어로 된 표준 라이브러리의 표준 출력 함수의 경우 기본 출력 장치는 표시자입니다. 직렬 출력 또는 LCD 출력을 구현하려면 표준 라이브러리의 출력 기능을 재정의해야 합니다. 예를 들어 함수 printf를 직렬 포트로 출력하려면 함수 fputc의 출력을 직렬 포트(리디렉션)로 보내야 합니다. 그렇게 하는 것은 쉽습니다. 함수 int fputc(int ch, FILE *f)를 추가하고 직렬 포트가 문자를 출력할 수 있는지 확인합니다. 비디오에서, 나는 당신에게 CR (acsii 13 또는 Enter)에 의해 확정 문자열에서 컴퓨터에서 데이터를 수신하기 위해 UART 인터럽트를 사용하는 한 가지 가능한 방법을 보여 주었다. 타이머 또는 다른 방법을 사용하여 UART 데이터를 수신하는 방법에는 여러 가지가 있습니다. 여기서이 특정 예제에서는 CR을 받을 때까지 각 수신 된 바이트를 배열에 저장하는 가장 일반적인 메커니즘을 사용합니다. 그런 다음 “전송 및 로우바;cplt”라는 변수가 트리거되어 수신이 완료됨을 알리게 됩니다.

따라서 데이터를 읽은 후 새 세션에 대해 이 “전송 및 로우바;cplt”를 재설정해야 합니다. 컴퓨터 나 다른 장치에 데이터를 보내는 두 가지 일반적인 방법이 있습니다 : 하나, 우리는 내장 된 HAL 라이브러리를 사용하여 Keil에서 사용할 수있는 “printf”기능을 활용할 수 있습니다. cubeMX와 HAL 라이브러리를 사용하기 전에 개인적으로 첫 번째 선택을 선호했습니다. 이제 두 번째 메서드를 사용하여 HAL 라이브러리와 “sprintf”함수를 결합하기 위해 변경합니다. cplusplus.com 두 함수를 모두 확인하여 어떤 매개 변수가 어떤 변수 형식을 전송하는지 알아야 합니다. 예를 들어 “%i”는 정수용입니다. “%.2f”는 소수점 이후 2자리숫자의 부동 숫자입니다. 문자열에 대한 “%s”; “r”은 acsii 13과 동일합니다. “n”acsii 10과 동일 … HAL_UART_Transmit (&huart2, buff2, 스트렌(버프2), 10); 이 명령문은 HAL_UART_Transmit(&huart1, (uint8_t*)&ch, 1, 0xFFFF)는 직렬 포트 1을 통해 문자를 전송하는 것을 의미합니다. ch는 문자를 저장하기 위한 주소이며 0xFFFF는 시간 시간 지정 기간입니다.

파일 stm32f7xx_hal_uart.c에서 HAL_UART_Transmit 함수를 찾을 수 있습니다. 폴링 모드: CPU는 IO 장치를 지속적으로 쿼리하고 장치에서 요구 사항을 처리합니다. 예를 들어 CPU는 데이터 전송이 완료되었는지 여부를 직렬 포트를 쿼리합니다. 전송 시간이 지남에 따라 시간 초과 오류가 반환됩니다. 폴링은 CPU 시간을 차지할 수 있기 때문에 비효율적인 방법입니다. 아니 우리는 프로젝트를 컴파일하고 마이크로 컨트롤러를 프로그래밍 할 수 없습니다! 그 후 디버그 세션을 시작 하 고 receiveBuffer[] 데이터 배열을 볼 수 있습니다.: DMA: 직접 메모리 는 CPU 중간 개입 없이 메모리와 IO 장치 간에 전송 될 데이터 블록을 허용 합니다. 처음에는 CPU가 데이터 블록 전송 명령을 장치에 보내고 인터럽트를 사용하여 전송이 완료되었는지 여부와 다음 작업이 준비되었는지 여부를 판단합니다. 비디오 클립의 전송 부분으로 돌아가서 “printf”함수를 사용하는 첫 번째 방법의 경우 구성 코드는 매우 복잡하지만 전송 부분은 매우 간단합니다. #include 부분 바로 뒤에 있는 코드의 시작 부분에 다음 코드를 붙여넣기만 하면 됩니다. 파일 main.c 뒤에 인터럽트 수신 콜백 함수를 추가합니다. 이 함수에서는 수신된 데이터가 직렬 인터페이스를 통해 반환됩니다. HAL 라이브러리는 데이터를 전송하고 수신하기위한 몇 가지 기능을 제공합니다 : 이제 STM32가 연결된 COM 포트에 “켜기”를 보내면 STM 보드 “ON”에서 LED가 켜지고 “꺼져”있을 때 LED “끄기”가 켜집니다.

Centro per un Futuro Sostenibile via Tacito, 84 00193 Roma tel. +39 06 90288228