bool usart_get_interrupt_source(uint32_t usart, uint32_t flag) { uint32_t flag_set = (USART_ISR(usart) & flag); /* IDLE, RXNE, TC, TXE interrupts */ if ((flag >= USART_ISR_IDLE) && (flag <= USART_ISR_TXE)) { return ((flag_set & USART_CR1(usart)) != 0); /* Overrun error */ } else if (flag == USART_ISR_ORE) { return flag_set && (USART_CR3(usart) & USART_CR3_CTSIE); } return false; }
void BT_ISR(void) { if (((USART_CR1(BTUART) & USART_CR1_RXNEIE) != 0) && ((USART_ISR(BTUART) & USART_ISR_RXNE) != 0)) { /* Retrieve the data from the peripheral. */ *ptr = usart_recv(BTUART); if ((ptr - bt_buf) < (int)sizeof(bt_buf) -1) { ptr++; } //printf("%c", *ptr); } }
void UART5_IRQHandler(void){ USART_ISR(4); }
void UART4_IRQHandler(void){ USART_ISR(3); }
void USART3_IRQHandler(void){ USART_ISR(2); }
void USART2_IRQHandler(void){ USART_ISR(1); }
///////////////////////////////////////////////////////////////////// // USARTs ISRs. For convenience, they all call USART_ISR(n); ///////////////////////////////////////////////////////////////////// // @brief : usart1 ISR handler. Uses USART_ISR(n) for service. void USART1_IRQHandler(void){ USART_ISR(0); }
void usart_wait_recv_ready(uint32_t usart) { /* Wait until the data is ready to be received. */ while ((USART_ISR(usart) & USART_ISR_RXNE) == 0); }
void usart_wait_send_ready(uint32_t usart) { /* Wait until the data has been transferred into the shift register. */ while ((USART_ISR(usart) & USART_ISR_TXE) == 0); }
bool usart_get_flag(uint32_t usart, uint32_t flag) { return ((USART_ISR(usart) & flag) != 0); }
bool usart_is_send_ready(uint32_t usart) { return ((USART_ISR(usart) & USART_ISR_TXE)); /* TXE set, means ready to write byte */ }
bool usart_is_recv_ready(uint32_t usart) { return ((USART_ISR(usart) & USART_ISR_RXNE)); /* RXNE set means there is data to be read */ }
bool usart_is_recv_ready(uint32_t usart) { return (USART_ISR(usart) & USART_ISR_RXNE); }
bool usart_is_send_ready(uint32_t usart) { return (USART_ISR(usart) & USART_ISR_TXE); }