Red de conocimiento informático - Problemas con los teléfonos móviles - Cómo escribir una interrupción del puerto serie para stm8l152

Cómo escribir una interrupción del puerto serie para stm8l152

Este es el método al que las interrupciones de la serie stm32f2 pueden referirse

void UART4_IRQHandler(void)

{

uint8_t Rx_buffer_num = 0;

if ( UART4_Get_Flag)

{

USART_ClearITPendingBit(UART4, USART_IT_RXNE); // Borrar bandera

Regresar

}

if (USART_GetITStatus(UART4, USART_IT_RXNE) == SET) // Indicador no nulo

{

RxBuffer[UART4_ReceiveCounter++] = USART_ReceiveData(EVAL_COM1); el buffer de recepción

if(RxBuffer[0] != 0xaa)

{

UART4_ReceiveCounter = 0

}

else if (UART4_ReceiveCounter > RxBuffer[1] + 1)

{

UART4_ReceiveCounter = 0

}

<; p>if (UART4_ReceiveCounter >= 2)

{

Rx_buffer_num=RxBuffer[1] + 1;

if(UART4_ReceiveCounter == Rx_buffer_num) // Determinar la longitud de recepción Indica que se ha recibido una trama

{

if((RxBuffer[UART4_ReceiveCounter - 1] == 0xef) //El encabezado y la cola de la trama son correctos

&&RxBuffer[counter-1] == 0xef&&RxBuffer[counter-2] == 0xef)

{

UART4_ReceiveCounter = 0;

UART4_Get_Flag = TRUE;

p>

//USART_ITConfig(UART4,USART_IT_RXNE, DISABLE);//Desactivar recepción de interrupción

TestOutputBuffer.EndingFlag = RxBuffer[3];

}

}

}

> }

// PrepareOutputBuffer();

}

if(USART_GetFlagStatus(UART4, USART_FLAG_ORE)==SET) // Indicador de eliminación de desbordamiento

{

USART_ ClearFlag(EVAL_COM1,USART_FLAG_ORE) ; //Leer SR

USART_ReceiveData(EVAL_COM1);//Leer DR

}

USART_ClearITPendingBit(UART4, USART_IT_RXNE

); }