stm32 uart 수신 예제

stm32 uart 수신 예제

태그: 비동기 직접 메모리 액세스maidle 라인tm32stm32 familystm32f4stm32f7tutorialusartartartartidle STM32 USART_Irq 예제 프로그램은 STM32 USART_Irq 예제 프로그램을 구성하고 STMicroelectronics STM32F103xx 마이크로 컨트롤러의 USART1을 사용하는 방법을 보여줍니다 인터럽트 구동 모드. USART1의 구성은 9600 Baud, 8 데이터 비트, 1 스톱 비트, 패리티 및 흐름 제어 없음입니다. Retargetting는 직렬 입력을 통해 문자를 읽고 직렬 출력에 문자열을 인쇄하는 데 사용됩니다. 데이터 전송/수신을 위해 버퍼 처리가 구현됩니다. 이 예는 Keil 평가 보드 MCBSTM32로 테스트됩니다. STM32 시리즈의 대부분은 IDLE 라인 감지기능이 있는 U(S)ART를 가지고 있습니다. IDLE 회선 감지를 사용할 수 없는 경우 일부 수신자 시간 지정 기능이 프로그래밍 가능한 지연이 있습니다. 이 경우에도 사용할 수 없는 경우 응용 프로그램은 아래에 제공된 예제와 함께 DMA가 있는 폴링 모드만 사용할 수 있습니다. 여기서는 마이크로의 UART를 통해 한 가지 더 예제를 살펴보겠습니다.

인프라 현명한 그것은 거의 이전 타이머 LED 예제와 동일. 리커 스크립트, 시작 파일, OpenOcd 구성. 파일 및 쓰기 바이너리 배시 스크립트는 모두 동일합니다. 내가 다르게 한 유일한 것은 라이브러리 함수를 복사하여 응용 프로그램 파일에 붙여 넣는 대신 관련 라이브러리 C 파일을 별도로 컴파일하고 모든 것을 링커에 남겨 두었다는 것입니다. 그래서 여기에 우리의 메이크 파일입니다 : 유휴 라인 감지 (또는 수신기 시간 지정)수신 라인이 수신을위한 적어도 1 문자에 대한 통신없이 꾸준한 경우 USART 인터럽트를 트리거 할 수 있습니다. 연습 예: 115200bauds에서 10바이트를 받았다고 가정해 보겠습니다. 115200 bauds의 각 바이트는 UART 라인에서 약 10us, 총 100us가 소요됩니다. IDLE 라인 인터럽트는 RX 라인에서 1자 비활성을 감지할 때 응용 프로그램에 통보하며, 이는 마지막 문자 후 10us 이후를 의미합니다. 응용 프로그램은 이 이벤트에 반응하고 그에 따라 데이터를 처리할 수 있습니다. 이제 단일 응용 프로그램에서 DMA 및 USART의 모든 기능을 사용할 차례입니다. 응용 프로그램에 의해 20 바이트를 받을 것으로 예상 하는 이전 예제로 이동 하는 경우 (실제로 수신 만 14), 우리는 지금 수 있습니다:이 경우 를 제외 하 고 폴링 3 다른 소스에서 알림을 가져옵니다:전송이 활성화 된 동안, 많은 인터럽트의 2 될 수 있습니다. 트리거: 다른 장치는 UART에 할당된 다른 DMA 채널 및 스트림 번호를 가지고 있습니다.

데이터시트가 아닌 장치의 참조 설명서에 있는 DMA 요청 매핑 테이블을 사용하여 올바른 숫자를 가져옵니다. 기본 소스 파일의 코드를 다음과 같은 것으로 바꿉니다.