forked from SZV10X_Software/SZV103_FM33A0xxEV_SiZhu

jinlicong
2024-06-12 f03cf3ae7a36954e64fc014e6bb7afd20c5a5247
HARDWARE/UART/uart.c
@@ -8,6 +8,12 @@
uint8_t up_comm_recv_buff[UP_COMM_RECV_BUFF_LEN_MAX] = {0};
uint8_t WRC_recv_buff[WRC_RECV_BUFF_LEN_MAX] = {0};
UART_CTRL_PARA_T   uart_ctrl_para_g = {
   .WRC_rxto_flag = RESET,
   .RS485_rxto_flag = RESET,
   .UP_COMM_rxto_flag = RESET,
};
u16 USART_RX_STA = 0; //½ÓÊÕ״̬±ê¼Ç
//void Usmart_RecvDataProcess(UC_RECV_PARA_T *usmart_recv_para_p)
//{
@@ -64,6 +70,25 @@
   }   
}
void UART1_IRQHandler(void)
{
   //Ö»ÓÐuart0ºÍuart1ÓнÓÊÕ³¬Ê±ÖжÏ
   if(UARTx_ISR_RXTO_Chk(UART1) == SET){
      UARTx_ISR_RXTO_Clr(UART1);
      uart_ctrl_para_g.RS485_rxto_flag = SET;
      uart_ctrl_para_g.WRC_rxto_flag =  SET;
   }
}
//void UART5_IRQHandler(void)
//{
//   //Ö»ÓÐuart0ºÍuart1ÓнÓÊÕ³¬Ê±ÖжÏ
//   if(UARTx_ISR_RXTO_Chk(UART5) == SET){
//      UARTx_ISR_RXTO_Clr(UART5);
//      uart_ctrl_para_g.UP_COMM_rxto_flag = SET;
//   }
//}
void RS485_read_data_uart_Init(uint32_t   BaudRate,UART_ParityBitTypeDef   ParityBit,UART_StopBitTypeDef      StopBit)
{
@@ -76,8 +101,11 @@
   AltFunIO(RS485_READ_DATA_RX_PORT, RS485_READ_DATA_RX_PIN, ALTFUN_NORMAL);   
   
   //UART¹¤×÷ʱÖÓÔ´Ñ¡Ôñ   Ö»ÓÐUART0¡¢1ÐèҪѡÔñ  ÆäËûUART¶Ë¿ÚÔݲ»ÐèÒª  Ö±½Ó×¢Êͼ´¿É
   if((RS485_READ_DATA_UARTX==UART0)||(RS485_READ_DATA_UARTX==UART1))
   if(RS485_READ_DATA_UARTX==UART0)
      UART_para.ClockSrc = CMU_OPCCR1_UART0CKS_APBCLK;      //UART0¹¤×÷ʱÖÓÑ¡Ôñ   
   else if(RS485_READ_DATA_UARTX==UART1)
      UART_para.ClockSrc = CMU_OPCCR1_UART1CKS_APBCLK;      //UART1¹¤×÷ʱÖÓÑ¡Ôñ
   
   UART_para.BaudRate = BaudRate;
   UART_para.ParityBit = ParityBit;         //ÆæÅ¼Ð£Ñé
@@ -93,10 +121,16 @@
//   UARTx_IER_RXBF_IE_Setable(RS485_READ_DATA_UARTX, ENABLE);//½ÓÊÕ»º´æÂúÖжÏʹÄÜ ÐèҪʹÓýÓÊÕÖжϴò¿ª´Ë´¦ÉèÖÃ
//   UARTx_IER_TXSE_IE_Setable(RS485_READ_DATA_UARTX, ENABLE)£»//·¢ËÍ»º´æ¿ÕÇÒ·¢ËÍÒÆÎ»¼Ä´æÆ÷¿ÕÖжÏʹÄÜ ÐèҪʹÓ÷¢ËÍÖжϴò¿ª´Ë´¦ÉèÖÃ
   
   /*NVICÖжÏÓÅÏȼ¶ÒÔ¼°ÊÇ·ñ´ò¿ªÖжÏÅäÖÃ*/
   NVIC_DisableIRQ(RS485_READ_DATA_UARTX_IRQn);
//   NVIC_SetPriority(RS485_READ_DATA_UARTX_IRQn,2);//ÖжÏÓÅÏȼ¶ÅäÖÃ
//   NVIC_EnableIRQ(RS485_READ_DATA_UARTX_IRQn);      //ÖжϷþÎñº¯Êý¿ª
   UARTx_TODR_RXTO_LEN_Set(RS485_READ_DATA_UARTX, 255);//Ö»ÓÐuart0ºÍuart1ÓнÓÊÕ³¬Ê±ÖжÏ
   UARTx_ISR_RXTO_Clr(RS485_READ_DATA_UARTX);
   UARTx_IER_RXTO_IE_Setable(RS485_READ_DATA_UARTX, ENABLE);
//   NVIC_EnableIRQ(RS485_READ_DATA_UARTX_IRQn);
   UARTx_CSR_RXTOEN_Setable(RS485_READ_DATA_UARTX, ENABLE);
   /*NVICÖжÏÓÅÏȼ¶ÒÔ¼°ÊÇ·ñ´ò¿ªÖжÏÅäÖÃ*/
//   NVIC_DisableIRQ(RS485_READ_DATA_UARTX_IRQn);
   NVIC_SetPriority(RS485_READ_DATA_UARTX_IRQn,2);//ÖжÏÓÅÏȼ¶ÅäÖÃ
   NVIC_EnableIRQ(RS485_READ_DATA_UARTX_IRQn);      //ÖжϷþÎñº¯Êý¿ª
   
   UARTx_CSR_RXEN_Setable(RS485_READ_DATA_UARTX, ENABLE);  //´ò¿ª½ÓÊÕʹÄÜ
   UARTx_CSR_TXEN_Setable(RS485_READ_DATA_UARTX, ENABLE);  //´ò¿ª·¢ËÍʹÄÜ
@@ -165,8 +199,10 @@
   UP_COMM_RE_RECV_EN;
   
   //UART¹¤×÷ʱÖÓÔ´Ñ¡Ôñ   Ö»ÓÐUART0¡¢1ÐèҪѡÔñ  ÆäËûUART¶Ë¿ÚÔݲ»ÐèÒª  Ö±½Ó×¢Êͼ´¿É
   if((UP_COMM_UARTX==UART0)||(UP_COMM_UARTX==UART1))
   if(UP_COMM_UARTX==UART0)
      UART_para.ClockSrc = CMU_OPCCR1_UART0CKS_APBCLK;      //UART0¹¤×÷ʱÖÓÑ¡Ôñ   
   else if(UP_COMM_UARTX==UART1)
      UART_para.ClockSrc = CMU_OPCCR1_UART1CKS_APBCLK;      //UART1¹¤×÷ʱÖÓÑ¡Ôñ
   
   UART_para.BaudRate = BaudRate;
   UART_para.ParityBit = ParityBit;         //ÆæÅ¼Ð£Ñé
@@ -181,10 +217,17 @@
   
//   UARTx_IER_RXBF_IE_Setable(UP_COMM_UARTX, ENABLE);//½ÓÊÕ»º´æÂúÖжÏʹÄÜ ÐèҪʹÓýÓÊÕÖжϴò¿ª´Ë´¦ÉèÖÃ
//   UARTx_IER_TXSE_IE_Setable(UP_COMM_UARTX, ENABLE)£»//·¢ËÍ»º´æ¿ÕÇÒ·¢ËÍÒÆÎ»¼Ä´æÆ÷¿ÕÖжÏʹÄÜ ÐèҪʹÓ÷¢ËÍÖжϴò¿ª´Ë´¦ÉèÖÃ
//   NVIC_DisableIRQ(UP_COMM_UARTX_IRQn);
//   UARTx_TODR_RXTO_LEN_Set(UP_COMM_UARTX, 255);//Ö»ÓÐuart0ºÍuart1ÓнÓÊÕ³¬Ê±ÖжÏ
//   UARTx_ISR_RXTO_Clr(UP_COMM_UARTX);
//   UARTx_IER_RXTO_IE_Setable(UP_COMM_UARTX, ENABLE);
////   NVIC_EnableIRQ(UP_COMM_UARTX_IRQn);
//   UARTx_CSR_RXTOEN_Setable(UP_COMM_UARTX, ENABLE);
   
   /*NVICÖжÏÓÅÏȼ¶ÒÔ¼°ÊÇ·ñ´ò¿ªÖжÏÅäÖÃ*/
   NVIC_DisableIRQ(UP_COMM_UARTX_IRQn);
//   NVIC_SetPriority(UP_COMM_UARTX_IRQn,2);//ÖжÏÓÅÏȼ¶ÅäÖÃ
//   NVIC_SetPriority(UP_COMM_UARTX_IRQn,4);//ÖжÏÓÅÏȼ¶ÅäÖÃ
//   NVIC_EnableIRQ(UP_COMM_UARTX_IRQn);      //ÖжϷþÎñº¯Êý¿ª
   
   UARTx_CSR_RXEN_Setable(UP_COMM_UARTX, ENABLE);  //´ò¿ª½ÓÊÕʹÄÜ
@@ -250,8 +293,10 @@
   AltFunIO(WRC_RX_PORT, WRC_RX_PIN, ALTFUN_NORMAL);   
   
   //UART¹¤×÷ʱÖÓÔ´Ñ¡Ôñ   Ö»ÓÐUART0¡¢1ÐèҪѡÔñ  ÆäËûUART¶Ë¿ÚÔݲ»ÐèÒª  Ö±½Ó×¢Êͼ´¿É
   if((WRC_UARTX==UART0)||(WRC_UARTX==UART1))
   if(WRC_UARTX==UART0)
      UART_para.ClockSrc = CMU_OPCCR1_UART0CKS_APBCLK;      //UART0¹¤×÷ʱÖÓÑ¡Ôñ   
   else if(WRC_UARTX==UART1)
      UART_para.ClockSrc = CMU_OPCCR1_UART1CKS_APBCLK;      //UART1¹¤×÷ʱÖÓÑ¡Ôñ
   
   UART_para.BaudRate = BaudRate;
   UART_para.ParityBit = ParityBit;         //ÆæÅ¼Ð£Ñé
@@ -267,10 +312,17 @@
//   UARTx_IER_RXBF_IE_Setable(WRC_UARTX, ENABLE);//½ÓÊÕ»º´æÂúÖжÏʹÄÜ ÐèҪʹÓýÓÊÕÖжϴò¿ª´Ë´¦ÉèÖÃ
//   UARTx_IER_TXSE_IE_Setable(WRC_UARTX, ENABLE)£»//·¢ËÍ»º´æ¿ÕÇÒ·¢ËÍÒÆÎ»¼Ä´æÆ÷¿ÕÖжÏʹÄÜ ÐèҪʹÓ÷¢ËÍÖжϴò¿ª´Ë´¦ÉèÖÃ
   
   /*NVICÖжÏÓÅÏȼ¶ÒÔ¼°ÊÇ·ñ´ò¿ªÖжÏÅäÖÃ*/
   NVIC_DisableIRQ(WRC_UARTX_IRQn);
//   NVIC_SetPriority(WRC_UARTX_IRQn,2);//ÖжÏÓÅÏȼ¶ÅäÖÃ
//   NVIC_EnableIRQ(WRC_UARTX_IRQn);      //ÖжϷþÎñº¯Êý¿ª
   UARTx_TODR_RXTO_LEN_Set(WRC_UARTX, 255);//Ö»ÓÐuart0ºÍuart1ÓнÓÊÕ³¬Ê±ÖжÏ
   UARTx_ISR_RXTO_Clr(WRC_UARTX);
   UARTx_IER_RXTO_IE_Setable(WRC_UARTX, ENABLE);
//   NVIC_EnableIRQ(WRC_UARTX_IRQn);
   UARTx_CSR_RXTOEN_Setable(WRC_UARTX, ENABLE);
   /*NVICÖжÏÓÅÏȼ¶ÒÔ¼°ÊÇ·ñ´ò¿ªÖжÏÅäÖÃ*/
//   NVIC_DisableIRQ(WRC_UARTX_IRQn);
   NVIC_SetPriority(WRC_UARTX_IRQn,2);//ÖжÏÓÅÏȼ¶ÅäÖÃ
   NVIC_EnableIRQ(WRC_UARTX_IRQn);      //ÖжϷþÎñº¯Êý¿ª
   
   UARTx_CSR_RXEN_Setable(WRC_UARTX, ENABLE);  //´ò¿ª½ÓÊÕʹÄÜ
   UARTx_CSR_TXEN_Setable(WRC_UARTX, ENABLE);  //´ò¿ª·¢ËÍʹÄÜ