Exemple #1
0
void USART6_IRQHandler(void) {
	/* Check RXNE flag value in SR register */
	if(LL_USART_IsActiveFlag_RXNE(USART6) && LL_USART_IsEnabledIT_RXNE(USART6)) {
		/* RXNE flag will be cleared by reading of DR register (done in call) */
		/* Call function in charge of handling Character reception */
		if(rx_index >= RX_BUFFER_SIZE - 1) { 
			printf("Error, command too Big\r\n");
			rx_index = 0;
			return; 
		}

		uint8_t rx_char = LL_USART_ReceiveData8(USART6);
		if(echo) { printf("%c", rx_char); }

		rx_buffer[rx_index++] = rx_char;
		if(rx_char == '\r' || rx_char == '\n') {
			uint16_t bytes_consumed;
			if(rx_index == 1) { bytes_consumed = 1; }
			else {
				bytes_consumed = process_serial_buffer(rx_buffer, rx_index);
			}
			if(bytes_consumed >= rx_index) { rx_index = 0; }
			else { rx_index -= bytes_consumed; }
		}
	}
}
Exemple #2
0
static int uart_stm32_irq_is_pending(struct device *dev)
{
	USART_TypeDef *UartInstance = UART_STRUCT(dev);

	return ((LL_USART_IsActiveFlag_RXNE(UartInstance) &&
		 LL_USART_IsEnabledIT_RXNE(UartInstance)) ||
		(LL_USART_IsActiveFlag_TC(UartInstance) &&
		 LL_USART_IsEnabledIT_TC(UartInstance)));
}
void USART4_5_IRQHandler(void)
{
    int rx_ready = 0;
    char rx;

    CPSR_ALLOC();
    RHINO_CPU_INTRPT_DISABLE();

    if ( LL_USART_IsActiveFlag_RXNE(USART4) && (LL_USART_IsEnabledIT_RXNE(USART4 ) != RESET) )
    {
        /* no need to clear the RXNE flag because it is auto cleared by reading the data*/
        rx = LL_USART_ReceiveData8( USART4 );
        rx_ready = 1;
        //PRINTF("%c\r\n", rx);
    }
    if (rx_ready) {
#ifdef CONFIG_LINKWAN_TEST
        extern void linkwan_test_cli_cb(uint8_t cmd);
        linkwan_test_cli_cb(rx);
#endif
    }

    RHINO_CPU_INTRPT_ENABLE();
}