From adb51de38fed8dbdd04316ed7a270c7d68c59e42 Mon Sep 17 00:00:00 2001 From: zhangbo <zhangbo@qq.com> Date: 星期四, 08 五月 2025 10:39:00 +0800 Subject: [PATCH] 修改了4G修改波特率的不成功的bug --- keil/include/components/hal/UART.c | 71 +++++++++++++++++++++++------------ 1 files changed, 46 insertions(+), 25 deletions(-) diff --git a/keil/include/components/hal/UART.c b/keil/include/components/hal/UART.c index afe11f7..b409785 100644 --- a/keil/include/components/hal/UART.c +++ b/keil/include/components/hal/UART.c @@ -146,7 +146,7 @@ l_astUartInfo[_eUartID].m_mutexLock = osMutexCreate(HIDO_NULL); #endif -struct UART_CFG_T uart_cfg = + struct UART_CFG_T uart_cfg = { .parity = UART_PARITY_NONE, .stop = UART_STOP_BITS_1, @@ -155,8 +155,8 @@ .rx_level = UART_RXFIFO_CHAR_1, .tx_level = UART_TXFIFO_EMPTY, .baud = get_baud(_pstInit->m_u32BaudRate), - .dma_en = false, - .int_rx = true, + .dma_en = true, + .int_rx = false, .int_tx = false, }; @@ -168,8 +168,12 @@ l_astUartInfo[_eUartID].m_u32RxBufSize = _pstInit->m_u32RxBufSize; if(UART_RX_MODE_DMA == _pstInit->m_eRxMode) { - l_astUartInfo[_eUartID].m_pu8RxLastPos= l_astUartInfo[_eUartID].m_pu8RxBuf; - l_astUartInfo[_eUartID].m_pu8RxBufEnd = l_astUartInfo[_eUartID].m_pu8RxBuf + l_astUartInfo[_eUartID].m_u32RxBufSize - 1; + HIDO_ArraryQueueInit( + &l_astUartInfo[_eUartID].m_stRxArraryQueue, + _pstInit->m_pu8RxBuf, + _pstInit->m_u32RxBufSize, + sizeof(HIDO_UINT8)); + return HIDO_OK; } else if(UART_RX_MODE_INT == _pstInit->m_eRxMode) { @@ -337,25 +341,14 @@ *******************************************************************************/ static void uart_receive_callback(void *dev, uint32_t err_code) { - E_UartID eUartID = (E_UartID) 0; + E_UartID eUartID = UART_ID_4G; + + HIDO_UINT8 u8RecvByte = l_astUartInfo[eUartID].m_u8RxValue; - for (eUartID = (E_UartID) 0; eUartID < UART_ID_LAST; eUartID++) - { - if (l_astUartInfo[eUartID].m_eUartPort == *(enum UART_DEV_T *)dev) - { - if(UART_RX_MODE_INT == l_astUartInfo[eUartID].m_eRxMode) - { - HIDO_UINT8 u8RecvByte = l_astUartInfo[eUartID].m_u8RxValue; + HIDO_ArraryQueueIn(&l_astUartInfo[eUartID].m_stRxArraryQueue, &u8RecvByte); - HIDO_ArraryQueueIn(&l_astUartInfo[eUartID].m_stRxArraryQueue, &u8RecvByte); - - /* 启动INT接收 */ - uart_receive(l_astUartInfo[eUartID].m_eUartPort, &l_astUartInfo[eUartID].m_u8RxValue, 1, uart_receive_callback); - } - - break; - } - } + /* 启动INT接收 */ + uart_receive(l_astUartInfo[eUartID].m_eUartPort, &l_astUartInfo[eUartID].m_u8RxValue, 1, uart_receive_callback); } /******************************************************************************* @@ -380,11 +373,16 @@ osMutexWait(l_astUartInfo[_eUartID].m_mutexLock, osWaitForever); #endif - if (UART_RX_MODE_INT == l_astUartInfo[_eUartID].m_eRxMode) + switch(l_astUartInfo[_eUartID].m_eRxMode) { - if (HIDO_ArraryQueueOut(&l_astUartInfo[_eUartID].m_stRxArraryQueue, _pu8Char) == HIDO_OK) + case UART_RX_MODE_INT: + case UART_RX_MODE_DMA: { - i32Result = HIDO_OK; + if (HIDO_ArraryQueueOut(&l_astUartInfo[_eUartID].m_stRxArraryQueue, _pu8Char) == HIDO_OK) + { + i32Result = HIDO_OK; + } + break; } } @@ -393,6 +391,20 @@ #endif return i32Result; +} + +/******************************************************************************* + * Function Name : Uart_SetChar + * Description : + * Input : + * Output : + * Return : + * Author : 杜键 + * Modified Date: : 2018年4月24日 + *******************************************************************************/ +HIDO_VOID Uart_SetChar(E_UartID _eUartID, HIDO_UINT8 _u8Data) +{ + HIDO_ArraryQueueIn(&l_astUartInfo[_eUartID].m_stRxArraryQueue, &_u8Data); } /******************************************************************************* @@ -472,3 +484,12 @@ return i32Result; } +HIDO_VOID HIDO_Lock(void) +{ + int_lock(); +} +HIDO_VOID HIDO_UnLock(void) +{ + uint32_t lock = int_lock(); + int_unlock(lock); +} -- Gitblit v1.9.3