Mi informacion de contacto
Correo[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
El puerto serie STM32 es bastante rico y tiene funciones potentes. Puede proporcionar hasta 5 puertos serie, con generador de velocidad de baudios fraccional, admite comunicación óptica de una sola línea y comunicación de una sola línea semidúplex, admite LIN, protocolo de tarjeta inteligente y especificación IrDA SIRENDEC (solo compatible con el puerto serie 3), DMA , etc.
La configuración más básica del puerto serie es la configuración de velocidad en baudios. El puerto serie STM32 es bastante simple de usar. Siempre que encienda el reloj del puerto serie, configure el modo del puerto IO correspondiente y luego configure la velocidad en baudios, la longitud del bit de datos, el bit de paridad y otra información, puede usarlo. él. A continuación, presentaremos brevemente estos registros directamente relacionados con la configuración básica del puerto serie.
1. Habilite el reloj del puerto serie. Como periférico de STM32, el reloj del puerto serie está controlado por el registro de habilitación permanente del periférico. El puerto serie 1 que utilizamos aquí es el bit 14 del registro APB2ENR. Excepto por la habilitación del reloj del puerto serie 1 en el registro APB2ENR, los bits de habilitación del reloj de otros puertos serie están todos en APB1ENR.
2. Restablecimiento del puerto serie . Cuando se produce una anomalía en un periférico, el periférico se puede restablecer configurando el bit correspondiente en el registro de reinicio y luego se puede reconfigurar el periférico para que funcione nuevamente.Generalmente, cuando el sistema configura los periféricos por primera vez, primero
Realice una operación para restablecer este periférico. El reset del puerto serie 1 se logra configurando el bit 14 del registro APB2RSTR.
3. Configuración de la velocidad en baudios del puerto serie. Cada puerto serie tiene su propio registro de velocidad en baudios independiente USART BRR. Al configurar este registro, puede configurar diferentes velocidades en baudios. Las descripciones de bits de este registro son las siguientes:
4. Control del puerto serie. Cada puerto serie de STM32 tiene tres registros de control USART CR1 ~ 3. Muchas configuraciones del puerto serie se configuran a través de estos tres registros.
5. Envío y recepción de datos. El envío y la recepción de STM32 se realizan a través del registro de datos USART _DR. Este es un registro doble, que incluye TDR y RDR. Al escribir datos en este registro, el puerto serie los enviará automáticamente.
tiempo, también se almacena en este registro.
Se puede observar que aunque es un registro de 32 bits, solo se utilizan los 9 bits inferiores (DR[8:0]) y los demás están reservados. DR[8:0] son datos del puerto serie, incluidos los datos enviados o recibidos. Al estar compuesto por dos registros, uno de envío (TDR) y otro de recepción (RDR), este registro tiene funciones tanto de lectura como de escritura. El registro TDR proporciona una interfaz paralela entre el bus interno y el registro de desplazamiento de salida. El registro RDR proporciona una interfaz paralela entre el registro de desplazamiento de entrada y el bus interno.
Al transmitir con el bit de verificación habilitado (el bit PCE USART CR1 está configurado), el valor escrito en el MSB (MSB es el séptimo u octavo bit dependiendo de la longitud de los datos) se modificará mediante el reemplazo de bits de verificación posteriores. Cuando el bit de paridad está habilitado para la recepción, el bit MSB leído es el bit de paridad recibido.
6. El estado del puerto serie se puede leer a través del registro de estado USART SR.
Aquí nos centramos en dos bits, los bits 5 y 6 RXNE y TC.
RXNE (el registro de lectura de datos no está vacío), cuando este bit se establece en 1, indica que se han recibido datos y se pueden leer. Lo que tenemos que hacer en este momento es leer el USART DR lo antes posible. Al leer el USART DR, podemos borrar este bit, o podemos escribir 0 en este bit para borrarlo directamente.
TC (envío completado), cuando este bit está establecido, significa que se han enviado los datos en USARTDR. Si se establece la interrupción para este bit, se generará una interrupción. Este bit también tiene dos métodos de borrado: 1: leer USART SR y escribir USARTDR. 2: Escribe 0 directamente en este bit.
- void uart_init(u32 pclk2,u32 bound)
- {
- float temp;
- u16 mantissar
- u16 fraction;
- temp=(float)(pclk2*1000000)/(bound*16);//得到USARTDIV
- mantissa=temp;//得到整数部分
- fraction=(temp-mantissa)*16://得到小数部分
- mantissa<<=4;
- mantissa+=fraction;
- RCC->APB2ENRI=1<<2;//使能PORTA口时钟
- RCC->APB2ENRI=1<<14;//使能串口时钟
- GPIOA->CRH&=0XFFFFF00F;
- GPIOA->CRH|=0X000008B0;//IO状态设置
- RCC->APB2RSTRI=1<<14;//复位串口1
- RCC->APB2RSTR&=~(1<<14)://停止复位
- //波特率设置
- USART1->BRR=mantissa;//波特率设置
- USART1->CR1|=0X200C;//1位停止,无校验位,
-
- USART1->CR1|=1<<8;//PE中断使能
- USART1->CR11=1<<5;//接收缓冲区非空中断使能
- MY_NVIC_Init(3,3,USART1 IRQChannel,2);//组2,最低优先级
- }
Inicialice el dispositivo de hardware del puerto serie y habilite las interrupciones:
Pasos de configuración:
(1) Encienda los relojes de GPI0 y USART1
(2) Configure el modo GPI0 de los dos pines USART1
(3) Configure el formato de datos USART1, la velocidad en baudios y otros parámetros
(4) Habilite la función de interrupción de recepción USART1
(5)Finalmente habilite la función USART1