#include "b_config.h" #include "hal/inc/b_hal_uart.h" #if !defined(HK32F103C8XX) && !defined(HK32F103CBXX) && !defined(HK32F103R8XX) && \ !defined(HK32F103RBXX) && !defined(HK32F103V8XX) && !defined(HK32F103VBXX) && \ !defined(HK32F103RCXX) && !defined(HK32F103RDXX) && !defined(HK32F103REXX) && \ !defined(HK32F103VCXX) && !defined(HK32F103VDXX) && !defined(HK32F103VEXX) #error \ "Please select first the target HK32F10x device used in your application (in HK32f10x.h file)" #else #include "hk32f10x.h" static USART_TypeDef *bMcuUartTable[] = {USART1, USART2, USART3, UART4, UART5}; int bMcuUartSend(bHalUartNumber_t uart, const uint8_t *pbuf, uint16_t len) { if (uart <= B_HAL_UART_5) { for (int i = 0; i < len; i++) { while (USART_GetFlagStatus(bMcuUartTable[uart], USART_FLAG_TXE) != SET) ; USART_SendData(bMcuUartTable[uart], pbuf[i]); } return 0; } return -1; } int bMcuUartReceiveDma(bHalUartNumber_t uart, bHalDmaConfig_t *pconf) { if ((uart > B_HAL_UART_3) || pconf == NULL) { return -1; } if (uart == B_HAL_UART_1) { pconf->request = B_DMA_REQ_UART1_RX; } else if (uart == B_HAL_UART_2) { pconf->request = B_DMA_REQ_UART2_RX; } else if (uart == B_HAL_UART_3) { pconf->request = B_DMA_REQ_UART3_RX; } USART_DMACmd(bMcuUartTable[uart], USART_DMAReq_Rx, ENABLE); pconf->src = (uint32_t)(&(bMcuUartTable[uart]->DR)); return bMcuDmaConfig(pconf); } #endif