From 6e3f1f560d618b37ee1a47fa2b0f682b70c3ef1c Mon Sep 17 00:00:00 2001
From: jinlicong <493886250@qq.com>
Date: Wed, 19 Jun 2024 17:25:45 +0800
Subject: [PATCH] 增加OTA协议
---
HARDWARE/UART/uart.c | 72 +++++++++++++++++++++++++++++++-----
1 files changed, 62 insertions(+), 10 deletions(-)
diff --git a/HARDWARE/UART/uart.c b/HARDWARE/UART/uart.c
index 7c3b5f0..7a1c099 100644
--- a/HARDWARE/UART/uart.c
+++ b/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); //����ʹ��
--
Gitblit v1.9.3