Cómo escribir una interrupción del puerto serie para stm8l152
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];
} p>
}
}
> }
// 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
); }