| | |
| | | #include "Usart.h" |
| | | #include <string.h> |
| | | #include <stdio.h> |
| | | |
| | | #include "modbus.h" |
| | | #include "Rcc_Nvic_Systick.h" |
| | | #include "global_param.h" |
| | | //æ°æ®åééååé |
| | | EUART_Frame m_EUART_TxFrames[EUART_TX_FRM_SIZE]; //æ°æ®åé帧éå |
| | | volatile int8_t m_EUART_TxFrm_Tail = 0; //æ°æ®åé帧éåå°¾æé |
| | |
| | | //DMAæ°æ®æ¥æ¶ç¼å |
| | | uint8_t m_EUART_DMA_RXBuf[EUART_RX_BUF_SIZE]; //DMAæ°æ®æ¥æ¶ç¼å |
| | | volatile int32_t m_EUART_DMA_RXPtr = 0; //å½åæ°æ®å°å |
| | | int16_t DMA_rxtemp = 0,DMA_rxtemp2 = 0; //å½åæ°æ®å°åç¼å |
| | | u16 datadelaycount = 0; //å©ä½1使°æ®å»¶æ¶çå¾
å¤ç |
| | | //æ å¿åé |
| | | volatile uint8_t m_bEUARTPushingFrms = 0; //æ£å¨å¾åééååæ°æ® |
| | | volatile uint8_t m_bEUARTCheckingSend = 0; //æ£å¨ç¡®è®¤æ°æ®åé |
| | |
| | | |
| | | //åå§å管è |
| | | GPIO_InitStructure.GPIO_Pin = EU_RX_PIN; |
| | | GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //Rx䏿è¾å
¥ |
| | | GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //Rx䏿è¾å
¥ |
| | | GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; |
| | | GPIO_Init(EU_RX_GPIO, &GPIO_InitStructure); |
| | | |
| | |
| | | UART_DMAConfiguration(); |
| | | |
| | | } |
| | | |
| | | u8 overrun_flag=0,receiveingdata_flag,gpsdataready_flag; |
| | | u8 RTCMdata[2000]; |
| | | u32 lastusartdata_timer; |
| | | u16 rtcm_i,gps_packlen; |
| | | u16 t1,t2,t3,t4; |
| | | extern volatile uint32_t time32_incr; |
| | | void UART_CheckReceive(void) |
| | | { |
| | | int32_t DMACnt = 0; |
| | |
| | | m_bEUARTCheckingRec = 0; |
| | | return; |
| | | } |
| | | if(time32_incr-lastusartdata_timer>300&&receiveingdata_flag) |
| | | { |
| | | gpsdataready_flag = 1; |
| | | receiveingdata_flag = 0; |
| | | gps_packlen = rtcm_i; |
| | | rtcm_i = 0; |
| | | t1++; |
| | | if(g_com_map[DEV_ROLE]) |
| | | { |
| | | UWBSendOnePackData(RTCMdata,gps_packlen); |
| | | gpsdataready_flag = 0; |
| | | } |
| | | } |
| | | DMACnt = EUART_RX_BUF_SIZE - (EUART_RX_DMA_CH->CNDTR); |
| | | while( m_EUART_DMA_RXPtr != DMACnt && MaxDataLen > 0) |
| | | { |
| | | Usart1ParseDataCallback(m_EUART_DMA_RXBuf[m_EUART_DMA_RXPtr]); |
| | | delay_us(10); |
| | | receiveingdata_flag = 1; |
| | | lastusartdata_timer = time32_incr; |
| | | //Usart1ParseDataCallback(m_EUART_DMA_RXBuf[m_EUART_DMA_RXPtr]); |
| | | RTCMdata[rtcm_i++] = m_EUART_DMA_RXBuf[m_EUART_DMA_RXPtr]; |
| | | //delay_us(10); |
| | | m_EUART_DMA_RXPtr++; |
| | | if( m_EUART_DMA_RXPtr >= EUART_RX_BUF_SIZE ) |
| | | { |
| | |
| | | } |
| | | m_bEUARTCheckingRec = 0; |
| | | } |
| | | |
| | | |
| | | #ifndef EXUART_USE_TXDMA |
| | | //æ¥è¯¢æ¹å¼åéæ°æ® |
| | |
| | | { |
| | | OUT485_DISABLE; |
| | | m_bEUARTTxEn = 0; |
| | | t3++; |
| | | // temp32 = GPIOC->CRH; //C10æ¬ç©ºè¾å
¥ |
| | | // temp32 &= ~(0x00000000F<<8); |
| | | // temp32 |= (0x000000004<<8); |
| | |
| | | m_bEUARTCheckingSend = 0; |
| | | return; |
| | | } |
| | | OUT485_ENABLE; |
| | | |
| | | if(!m_bEUARTTxEn) |
| | | { |
| | | m_bEUARTTxEn = 1; |
| | | OUT485_ENABLE; |
| | | t4++; |
| | | #ifdef BAUDRATE_19200 |
| | | delay_us(500); |
| | | #else |
| | | delay_us(10); |
| | | #endif |
| | | // temp32 = GPIOC->CRH; //C10å¤ç¨æ¨æ½è¾åº |
| | | // temp32 &= ~(0x00000000F<<8); |
| | | // temp32 |= (0x000000009<<8); |