Principios de la comunicación en serie

Tabla de contenido

1. Conocimientos básicos de la interfaz de comunicación

Dos, interfaz de comunicación en serie STM32

Tres, registros de uso común del puerto serie STM32 y funciones de biblioteca

Cuarto, los pasos generales de la configuración del puerto serie.


1. Conocimientos básicos de la interfaz de comunicación

1. Interfaz común de comunicación en serie

Dos, interfaz de comunicación en serie STM32

1. Pin de modo de comunicación asíncrona UART

2. Características del modo de comunicación asíncrona UART

3. Proceso de comunicación en serie:

4. Parámetros que deben definirse para la comunicación asíncrona serial STM32:

Tres, registros de uso común del puerto serie STM32 y funciones de biblioteca

1. Funciones de biblioteca relacionadas para la operación del puerto serie (se omiten los parámetros de entrada):

void USART_Init (); // Inicialización del puerto serie: velocidad en baudios, longitud de la palabra de datos, paridad, control de flujo de hardware y habilitación de
transmisión / recepción void USART_Cmd (); // habilitar puerto serial
void USART_ITConfig (); // habilitar interrupciones relacionadas

void USART_SendData (); // Enviar datos al puerto serie, DR
uint16_t USART_ReceiveData (); // Recibir datos, leer los datos recibidos de DR

FlagStatus USART_GetFlagStatus (); // Obtener bit de indicador de estado
void USART_ClearFlag (); // Borrar bit de indicador de estado
ITStatus USART_GetITStatus (); // Obtener bit de indicador de estado de interrupción
void USART_ClearITPendingBit (); // Borrar bit de indicador de estado de interrupción

2. Registro de estado

FlagStatus USART_GetFlagStatus (USART_TypeDef * USARTx, uint16_t USART_FLAG);

3. Registro de datos

anular USART_SendData (USART_TypeDef * USARTx, uint16_t Datos);
uint16_t USART_ReceiveData (USART_TypeDef * USARTx);

4. Registro de velocidad en baudios

anular USART_Init (USART_TypeDef * USARTx, USART_InitTypeDef * USART_InitStruct);

5. Método de cálculo de la tasa de baudios

Cuarto, los pasos generales de la configuración del puerto serie.

1. Habilitación del reloj del puerto serial, habilitación del reloj GPIO: RCC_APB2PeriphClockCmd ();
2. Reset serial: USART_DeInit (); Este paso no es necesario
3. Configuración del modo del puerto GPIO: GPIO_Init (); El modo está configurado en GPIO_Mode_AF_PP
4. Inicialización del parámetro serial : USART_Init ();
5. Encienda la interrupción e inicialice el NVIC (este paso es necesario si necesita encender la interrupción)
      NVIC_Init ();
      USART_ITConfig ();
6. Habilite el puerto serie: USART_Cmd ();
7. escribir el manejador de interrupciones: USARTx_IRQHandler ();
8, transmisor-receptor de datos en serie:
vacío USART_SendData (); // enviar datos al puerto serie, el DR
uint16_t USART_ReceiveData (); // aceptar datos, los datos de lectura recibidos del DR
. 9 , adquisición de estado de transmisión en serie:
FlagStatus USART_GetFlagStatus (USART_TypeDef * USARTx, uint16_t USART_FLAG);
void USART_ClearITPendingBit (USART_TypeDef * USARTx, uint16_t USART_IT);

Cinco, código de comunicación en serie

Printf admite:

//加入以下代码,支持printf函数,而不需要选择use MicroLIB	  
#if 1
#pragma import(__use_no_semihosting)             
//标准库需要的支持函数                 
struct __FILE 
{ int handle; 
}; 

FILE __stdout;       
//定义_sys_exit()以避免使用半主机模式    
_sys_exit(int x) 
{ x = x; } 

//重定义fputc函数 
int fputc(int ch, FILE *f)
{      
    while((USART1->SR&0X40)==0);//循环发送,直到发送完毕   
    USART1->DR = (u8) ch;      
   return ch;
}
#endif 

El programa requiere que los caracteres enviados terminen con retorno de carro y avance de línea (0x0D, 0x0A)

 

 

Supongo que te gusta

Origin blog.csdn.net/m0_46383618/article/details/113874087
Recomendado
Clasificación