| | |
| | | volatile int8_t m_EUART_TxFrm_FreeFrmLen = 0; //æ°æ®åé帧éåå©ä½å¸§æ° |
| | | //DMAæ°æ®æ¥æ¶ç¼å |
| | | uint8_t m_EUART_DMA_RXBuf[EUART_RX_BUF_SIZE]; //DMAæ°æ®æ¥æ¶ç¼å |
| | | volatile int32_t m_EUART_DMA_RXPtr = 0; //å½åæ°æ®å°å |
| | | volatile int32_t m_EUART_DMA_RXPtr = 0,m_EUART2_DMA_RXPtr = 0; //å½åæ°æ®å°å |
| | | //æ å¿åé |
| | | volatile uint8_t m_bEUARTPushingFrms = 0; //æ£å¨å¾åééååæ°æ® |
| | | volatile uint8_t m_bEUARTCheckingSend = 0; //æ£å¨ç¡®è®¤æ°æ®åé |
| | |
| | | |
| | | //åéä¸ä¸ªåèæ°æ® |
| | | EXT_UART->DR = m_EUART_TxFrames[m_EUART_TxFrm_Tail].buf[s_count]; |
| | | EXT_UART2->DR = m_EUART_TxFrames[m_EUART_TxFrm_Tail].buf[s_count]; |
| | | s_count++; |
| | | s_count++; |
| | | if(s_count >= m_EUART_TxFrames[m_EUART_TxFrm_Tail].len) //ä¸å¸§æ°æ®åé宿¯ |
| | | { |
| | | s_count = 0; |
| | |
| | | } // */ |
| | | |
| | | #else |
| | | /* |
| | | |
| | | //æ£æ¥æ¯å¦æ°æ®å¸§éè¦åé |
| | | void UART_CheckSend(void) |
| | | { |
| | |
| | | } // */ |
| | | #endif |
| | | |
| | | |
| | | u16 t1,t2,t3; |
| | | //å°ä¸å¸§æ°æ®åå
¥åééå |
| | | void UART_PushFrame(uint8_t* pdata, int32_t data_len) |
| | | { |
| | | // uint8_t temp8 = 0; |
| | | if(m_bEUARTPushingFrms || m_bEUARTCheckingSend) |
| | | { |
| | | return; |
| | | } |
| | | m_bEUARTPushingFrms = 1; |
| | | |
| | | if(data_len > EUART_TX_FRMBUF_SIZE || m_EUART_TxFrm_FreeFrmLen <= 0) //帧é¿åº¦è¶
èå´æç¼å已满 |
| | | { |
| | | m_bEUARTPushingFrms = 0; |
| | |
| | | m_EUART_TxFrm_Head = 0; |
| | | m_EUART_TxFrm_FreeFrmLen--; |
| | | m_bEUARTPushingFrms = 0; |
| | | UART_CheckSend(); |
| | | } |
| | | |
| | | //å°ææ°ä¸å¸§æ°æ®Popåºéå |
| | |
| | | return; |
| | | } |
| | | DMACnt = EUART_RX_BUF_SIZE - (UART2_RX_DMA_CH->CNDTR); |
| | | while( m_EUART_DMA_RXPtr != DMACnt && MaxDataLen > 0) |
| | | while( m_EUART2_DMA_RXPtr != DMACnt && MaxDataLen > 0) |
| | | { |
| | | Usart1ParseDataCallback(m_EUART_DMA_RXBuf[m_EUART_DMA_RXPtr]); |
| | | Usart1ParseDataCallback(m_EUART_DMA_RXBuf[m_EUART2_DMA_RXPtr]); |
| | | delay_us(10); |
| | | m_EUART_DMA_RXPtr++; |
| | | if( m_EUART_DMA_RXPtr >= EUART_RX_BUF_SIZE ) |
| | | m_EUART2_DMA_RXPtr++; |
| | | if( m_EUART2_DMA_RXPtr >= EUART_RX_BUF_SIZE ) |
| | | { |
| | | m_EUART_DMA_RXPtr = 0; |
| | | m_EUART2_DMA_RXPtr = 0; |
| | | } |
| | | DMACnt = EUART_RX_BUF_SIZE - (UART2_RX_DMA_CH->CNDTR); |
| | | MaxDataLen--; |