| | |
| | | volatile int8_t m_EUART_TxFrm_Head = 0; //数据发送帧队列头指针 |
| | | volatile int8_t m_EUART_TxFrm_FreeFrmLen = 0; //数据发送帧队列剩余帧数 |
| | | //DMA数据接收缓存 |
| | | uint8_t m_EUART_DMA_RXBuf[EUART_RX_BUF_SIZE]; //DMA数据接收缓存 |
| | | uint8_t m_EUART_DMA_RXBuf[EUART_RX_BUF_SIZE]; //DMA数据接收缓存 m_EUART_DMA_RXBuf_1 |
| | | uint8_t m_EUART_DMA_RXBuf_1[USART_RX_BUF_SIZE]; |
| | | volatile int32_t m_EUART_DMA_RXPtr = 0; //当前数据地址 |
| | | volatile int32_t m_EUART_DMA_RXPtr_1 = 0; |
| | | //int16_t DMA_rxtemp = 0,DMA_rxtemp2 = 0; //当前数据地址缓存 |
| | | //uint16_t datadelaycount = 0; //剩余1位数据延时等待处理 |
| | | //标志变量 |
| | |
| | | volatile uint8_t m_bEUARTTxEn = 0; //使能发送 |
| | | |
| | | void (*Usart1ParseDataCallback)(uint8_t); |
| | | void (*Usart0ParseDataCallback)(uint8_t); |
| | | void Usart1InitVariables(void) |
| | | { |
| | | m_EUART_TxFrm_FreeFrmLen = EUART_TX_FRM_SIZE-1; |
| | |
| | | //uint16_t t1,t2,t3,t4; |
| | | |
| | | uint16_t t3; |
| | | uint32_t cndtr=0; |
| | | |
| | | void UART_CheckReceive(void) |
| | | { |
| | | uint32_t cndtr=0; |
| | | int32_t DMACnt = 0; |
| | | int32_t MaxDataLen = EUART_RX_BUF_SIZE; |
| | | int32_t MaxDataLen = USART_RX_BUF_SIZE; |
| | | cndtr=get_uart1_dma_cndtr(); |
| | | //缺少check保护 |
| | | //如果正在往发送队列中添加数据,退出 |
| | |
| | | m_bEUARTCheckingRec = 0; |
| | | return; |
| | | } |
| | | DMACnt = EUART_RX_BUF_SIZE - cndtr; |
| | | while( m_EUART_DMA_RXPtr != DMACnt && MaxDataLen > 0) |
| | | DMACnt = USART_RX_BUF_SIZE - cndtr; |
| | | while( m_EUART_DMA_RXPtr_1 != DMACnt && MaxDataLen > 0) |
| | | { |
| | | Usart1ParseDataCallback(m_EUART_DMA_RXBuf[m_EUART_DMA_RXPtr]); |
| | | Usart0ParseDataCallback(m_EUART_DMA_RXBuf_1[m_EUART_DMA_RXPtr_1]); |
| | | //waitusart_timer = tag_frequency*USART_KEEPWAKE_TIME; |
| | | m_EUART_DMA_RXPtr++; |
| | | if( m_EUART_DMA_RXPtr >= EUART_RX_BUF_SIZE ) |
| | | m_EUART_DMA_RXPtr_1++; |
| | | if( m_EUART_DMA_RXPtr_1 >= USART_RX_BUF_SIZE ) |
| | | { |
| | | m_EUART_DMA_RXPtr = 0; |
| | | m_EUART_DMA_RXPtr_1 = 0; |
| | | } |
| | | DMACnt = EUART_RX_BUF_SIZE - cndtr; |
| | | DMACnt = USART_RX_BUF_SIZE - cndtr; |
| | | MaxDataLen--; |
| | | } |
| | | m_bEUARTCheckingRec = 0; |
| | | |
| | | } |
| | | |
| | | |
| | | void UART0_CheckReceive(void) |
| | | { |
| | | uint32_t cndtr=0; |
| | | int32_t DMACnt = 0; |
| | | int32_t MaxDataLen = EUART_RX_BUF_SIZE; |
| | | cndtr=get_uart0_dma_cndtr(); |
| | | //缺少check保护 |
| | | //如果正在往发送队列中添加数据,退出 |
| | | if(m_bEUARTPushingFrms) |
| | | return; |
| | | //判断是否正在Check |
| | | if(m_bEUARTCheckingRec) |
| | | return; |
| | | m_bEUARTCheckingRec = 1; |
| | | if(cndtr== 0) |
| | | { |
| | | m_bEUARTCheckingRec = 0; |
| | | return; |
| | | } |
| | | DMACnt = EUART_RX_BUF_SIZE - cndtr; |
| | | while( m_EUART_DMA_RXPtr != DMACnt && MaxDataLen > 0) |
| | | { |
| | | Usart1ParseDataCallback(m_EUART_DMA_RXBuf[m_EUART_DMA_RXPtr]); |
| | | //waitusart_timer = tag_frequency*USART_KEEPWAKE_TIME; |
| | | m_EUART_DMA_RXPtr++; |
| | | if( m_EUART_DMA_RXPtr >= EUART_RX_BUF_SIZE ) |
| | | { |
| | | m_EUART_DMA_RXPtr = 0; |
| | | } |
| | | DMACnt = EUART_RX_BUF_SIZE - cndtr; |
| | | MaxDataLen--; |
| | | } |
| | | m_bEUARTCheckingRec = 0; |
| | | |
| | | } |
| | | |
| | | #ifndef EXUART_USE_TXDMA |
| | | //查询方式发送数据 |