/** * @brief DMA UART receive process complete callback. * @param hdma: DMA handle * @retval None */ static void h_UART_DMAReceiveCplt(DMA_HandleTypeDef *hdma) { UART_HandleTypeDef* huart = ( UART_HandleTypeDef* )((DMA_HandleTypeDef* )hdma)->Parent; /* DMA Normal mode*/ if((hdma->Instance->CR & DMA_SxCR_CIRC) == 0) { huart->RxXferCount = 0; /* Disable the DMA transfer for the receiver request by setting the DMAR bit in the UART CR3 register */ huart->Instance->CR3 &= (uint32_t)~((uint32_t)USART_CR3_DMAR); /* Update Rx state*/ huart->RxState = HAL_UART_STATE_READY; } HAL_UART_RxCpltCallback(huart); }
//void TIM4_IRQHandler( void ) //void I2C1_EV_IRQHandler( void ) //void I2C1_ER_IRQHandler( void ) //void I2C2_EV_IRQHandler( void ) //void I2C2_ER_IRQHandler( void ) //void SPI1_IRQHandler( void ) //void SPI2_IRQHandler( void ) void USART1_IRQHandler( void ) { #if defined(KS_HW_UART_HAL_LIBRARY) HAL_UART_IRQHandler(hSerial.handle); #else if (__HAL_UART_GET_IT_SOURCE(hSerial.handle, UART_IT_TXE) != RESET) { __HAL_UART_GET_IT_SOURCE(hSerial.handle, UART_IT_TXE); HAL_UART_TxCpltCallback(hSerial.handle); } if (__HAL_UART_GET_IT_SOURCE(hSerial.handle, UART_IT_RXNE) != RESET) { __HAL_UART_GET_IT_SOURCE(hSerial.handle, UART_IT_RXNE); HAL_UART_RxCpltCallback(hSerial.handle); } #endif }
void DisableUart2ReceiveData(UART_HandleTypeDef* pUart) { while(HAL_IS_BIT_SET(pUart->Instance->ISR, UART_FLAG_RXNE)) { } __HAL_UART_DISABLE_IT(pUart, UART_IT_RXNE); /* Check if a transmit Process is ongoing or not */ if(pUart->gState == HAL_UART_STATE_BUSY_TX_RX) { pUart->gState = HAL_UART_STATE_BUSY_TX; } else { /* Disable the UART Parity Error Interrupt */ __HAL_UART_DISABLE_IT(pUart, UART_IT_PE); /* Disable the UART Error Interrupt: (Frame error, noise error, overrun error) */ __HAL_UART_DISABLE_IT(pUart, UART_IT_ERR); pUart->gState = HAL_UART_STATE_READY; } HAL_UART_RxCpltCallback(pUart); }