STM32L476R comunicación serie de inicio rápido con la computadora host

Hay dos formas de comunicación en serie: la primera es comunicarse utilizando las interfaces TX y RX aprendidas en la clase de principio de microcomputadora. Pero de acuerdo con la experiencia del año pasado, esta placa usa directamente las dos interfaces TX y RX para la comunicación y es fácil de quemar, por lo que usamos la comunicación USB más simple.
(Se pueden obtener más artículos en mi número Zhihu o CSDN)

Al enviar stm32, el profesor le dará una línea de alimentación USB, esta línea también se puede utilizar como línea serial. Y también recomiendo esto, porque puede usar un cable para la fuente de alimentación y la comunicación. Si no usa este USB para conectarse a la computadora host para comunicarse, debe comprar otro banco de energía para suministrar energía a través del USB, que es un poco redundante.

Primero veamos lo que necesita la computadora host. Para computadoras, necesita descargar un asistente de depuración de puerto serie. Luego abra el puerto serial.
Para stm32, debe utilizar un programa para abrir el puerto serie. Veamos cómo hacerlo:

#include "mbed.h"   //头文件

Serial s1(USBTX, USBRX); //这里是调用串口的命令,USBTX和USBRX指明了是通过USB先进行串口连接
//如果使用电脑做为另一个串口设备的话,需要提前安装电脑端的串口助手
DigitalOut myled(LED1);
int main() {
    
    
    s1.baud(9600);//设置波特率为9600,上位机的波特率也要设置一样,不然会乱码
    while (true) {
    
     
    s1.printf("hellow world \n");
    char c = pc.getc();
    if(c=='a')
    {
    
    
	myled = !myled
	}
    

#include "mbed.h"No hay nada que decir, pero se presenta el archivo de encabezado.
Serial s1 (USBTX, USBRX); Utiliza la función Serial, que es la función de llamada del puerto serie. Su especificación es Serial A (t, r). La primera t se refiere a qué interfaz TX se utiliza. Aquí, el sistema ha configurado la TX del puerto serie USB Está empaquetado como USBTX y el RX del puerto serie USB está empaquetado como USBRX.

Es decir, cuando se usa el puerto serie s1, el usb se usa para la comunicación.
En la función principal, primero debemos definir la velocidad en baudios, es decir, cuántos símbolos se transmiten a través del puerto serie en un segundo. Aquí debemos prestar atención a la velocidad en baudios de la computadora superior y la computadora inferior debe ser la misma, de lo contrario se distorsionará . La razón también es muy simple: si tu tasa de transmisión es a y la tasa que acepto es b, entonces estamos seguros de que no estamos hablando en el mismo canal (chat entre servidores), esto inevitablemente será confuso.

Simplemente configúrelo directamente en la computadora y use la s1.baud(9600);configuración en stm32. El valor entre paréntesis representa la velocidad en baudios. En cuanto a por qué es 9600, solo se puede decir que es un hábito.

s1.printf(“hellow world \n”);Es equivalente printf(“hellow world \n”);a usar el puerto serie para transmitir la cadena "hellow world \ n" y luego imprimirla.

c = pc.getc();Significa recibir un personaje de la computadora host y guardarlo como c.
Esto tiene la ventaja de que la computadora host puede controlar directamente el stm32 a través del puerto serie, y el
stm32 solo necesita realizar diferentes acciones según la diferencia del carácter c.

En la última parte del código, hice un ejemplo, siempre que la computadora superior pase por una letra 'a', cambiará el estado de encendido y apagado del LED.

char c = pc.getc();
    if(c=='a')
    {
    
    
	myled = !myled
	

Supongo que te gusta

Origin blog.csdn.net/yikuanglancheng/article/details/105408345
Recomendado
Clasificación