fix:修改UDP通讯中,取电变化上报机制
1、问题点:当RCU网络状态异常的情况下,网络还处于协商状态下,还未进入正常通讯环节时,取电变化不会进行判断。这会导致取电变化上报与实际产生取电状态时间点对不上。 2、将BLV_C1F_Module代码上传至Gitea,之前代码修改记录请查看 .\BasicCode\Readme.txt
This commit is contained in:
60
BasicCode/Drive/USART/DBG.h
Normal file
60
BasicCode/Drive/USART/DBG.h
Normal file
@@ -0,0 +1,60 @@
|
||||
#ifndef _DEBUG__H_
|
||||
#define _DEBUG__H_
|
||||
|
||||
#include "CH57x_common.h"
|
||||
|
||||
/* DEBUG log function. DEBUG printf() <20><><EFBFBD>ض<EFBFBD><D8B6><EFBFBD>*/
|
||||
#ifndef DBG_LOG_EN
|
||||
#define DBG_LOG_EN 1 //DEBUG LOG <20><><EFBFBD><EFBFBD><EFBFBD>ܿ<EFBFBD><DCBF><EFBFBD>
|
||||
#endif
|
||||
#define DBG_Particular_EN 1 //<2F><>ϸ<EFBFBD><CFB8>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD> -- <20><><EFBFBD>嵽<EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>к<EFBFBD>
|
||||
#define DBG_NET_LOG_EN 1 //<2F><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>
|
||||
|
||||
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2>ʼ״̬*/
|
||||
#define DBG_OPT_ActCond_STATUS 0 //<2F><><EFBFBD><EFBFBD>ִ<EFBFBD><D6B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2>ӡ<EFBFBD><D3A1><EFBFBD><EFBFBD>
|
||||
#define DBG_OPT_MQTT_STATUS 0 //MQTT<54><54><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2>ӡ<EFBFBD><D3A1><EFBFBD><EFBFBD>
|
||||
#define DBG_OPT_Debug_STATUS 0 //<2F><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2>ӡ<EFBFBD><D3A1><EFBFBD><EFBFBD>
|
||||
#define DBG_OPT_LOGIC_STATUS 0 //<2F><EFBFBD><DFBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2>ӡ<EFBFBD><D3A1><EFBFBD><EFBFBD>
|
||||
#define DBG_OPT_DEVICE_STATUS 0 //<2F>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӡ<EFBFBD><D3A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2>ӡ<EFBFBD><D3A1><EFBFBD><EFBFBD>
|
||||
#define DBG_OPT_NET_STATUS 0 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2>ӡ<EFBFBD><D3A1><EFBFBD><EFBFBD>
|
||||
#define DBG_OPT_SYS_STATUS 0 //ϵͳ<CFB5><CDB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2>ӡ<EFBFBD><D3A1><EFBFBD><EFBFBD>
|
||||
|
||||
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ*/
|
||||
#define DBG_BIT_ActCond_STATUS_bit 6
|
||||
#define DBG_BIT_MQTT_STATUS_bit 5
|
||||
#define DBG_BIT_Debug_STATUS_bit 4
|
||||
#define DBG_BIT_LOGIC_STATUS_bit 3
|
||||
#define DBG_BIT_DEVICE_STATUS_bit 2
|
||||
#define DBG_BIT_NET_STATUS_bit 1
|
||||
#define DBG_BIT_SYS_STATUS_bit 0
|
||||
|
||||
|
||||
#ifdef DBG_LOG_EN
|
||||
#define DBG_Printf(...) printf(__VA_ARGS__)
|
||||
#else
|
||||
#define DBG_Printf(...)
|
||||
#endif
|
||||
|
||||
#ifdef DBG_Particular_EN
|
||||
#define DBG_log(...) {DBG_Printf("%s %s-%d :",__FILE__,__func__,__LINE__);DBG_Printf(__VA_ARGS__);}
|
||||
#else
|
||||
#define DBG_log(...) DBG_Printf(__VA_ARGS__)
|
||||
#endif
|
||||
|
||||
#define DBG_INFO(msg) DBG_Printf("%s %s-%d :%s",__FILE__,__func__,__LINE__,msg)
|
||||
|
||||
#ifdef DBG_NET_LOG_EN
|
||||
#define DBG_NET_log(...) DBG_Printf(__VA_ARGS__)
|
||||
#else
|
||||
#define DBG_NET_log(...)
|
||||
#endif
|
||||
|
||||
extern uint32_t Dbg_Switch;
|
||||
|
||||
void Dbg_NoTick_Print(int DbgOptBit ,const char *cmd, ...);
|
||||
void Dbg_Print(int DbgOptBit ,const char *cmd, ...);
|
||||
void Dbg_Println(int DbgOptBit ,const char *cmd, ...);
|
||||
void Dbg_Print_Buff(int DbgOptBit ,const char *cmd ,uint8_t *buff,uint32_t len);
|
||||
|
||||
|
||||
#endif
|
||||
94
BasicCode/Drive/USART/Debug.c
Normal file
94
BasicCode/Drive/USART/Debug.c
Normal file
@@ -0,0 +1,94 @@
|
||||
#include "DBG.h"
|
||||
#include <stdarg.h>
|
||||
|
||||
long long SysTick_Now = 0, SysTick_Last = 0, SysTick_Diff = 0;
|
||||
char Dbg_Buffer[100];
|
||||
|
||||
uint32_t Dbg_Switch = (DBG_OPT_ActCond_STATUS << DBG_BIT_ActCond_STATUS_bit) + \
|
||||
(DBG_OPT_MQTT_STATUS << DBG_BIT_MQTT_STATUS_bit) + \
|
||||
(DBG_OPT_Debug_STATUS << DBG_BIT_Debug_STATUS_bit) + \
|
||||
(DBG_OPT_LOGIC_STATUS << DBG_BIT_LOGIC_STATUS_bit) + \
|
||||
(DBG_OPT_DEVICE_STATUS << DBG_BIT_DEVICE_STATUS_bit) + \
|
||||
(DBG_OPT_NET_STATUS << DBG_BIT_NET_STATUS_bit) + \
|
||||
(DBG_OPT_SYS_STATUS << DBG_BIT_SYS_STATUS_bit);
|
||||
|
||||
/*******************************************************************************
|
||||
* Function Name : Dbg_NoTick_Print
|
||||
* Description : DEBUG<55><47><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӡ
|
||||
* Input :
|
||||
* Return :
|
||||
*******************************************************************************/
|
||||
void Dbg_NoTick_Print(int DbgOptBit ,const char *cmd, ...)
|
||||
{
|
||||
if (DBG_LOG_EN && (Dbg_Switch & (1 << DbgOptBit )))
|
||||
{
|
||||
SysTick_Now = SysTick_1ms;
|
||||
SysTick_Diff = SysTick_Now - SysTick_Last ;
|
||||
SysTick_Last = SysTick_Now;
|
||||
|
||||
va_list args; //<2F><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>va_list<73><74><EFBFBD>͵ı<CDB5><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>浥<EFBFBD><E6B5A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
va_start(args,cmd); //ʹargsָ<73><D6B8><EFBFBD>ɱ<EFBFBD><C9B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
vprintf(cmd,args); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>vprintf<74>ȴ<EFBFBD>V<EFBFBD><56>
|
||||
va_end(args); //<2F><><EFBFBD><EFBFBD><EFBFBD>ɱ<EFBFBD><C9B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD>ȡ
|
||||
}
|
||||
}
|
||||
|
||||
void Dbg_Print(int DbgOptBit ,const char *cmd, ...)
|
||||
{
|
||||
if (DBG_LOG_EN && (Dbg_Switch & (1 << DbgOptBit )))
|
||||
{
|
||||
SysTick_Now = SysTick_1ms;
|
||||
SysTick_Diff = SysTick_Now - SysTick_Last ;
|
||||
SysTick_Last = SysTick_Now;
|
||||
sprintf(Dbg_Buffer,"%8.lld [%6.lld]: ",SysTick_Now,SysTick_Diff);
|
||||
DBG_Printf("%s",Dbg_Buffer);
|
||||
va_list args; //<2F><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>va_list<73><74><EFBFBD>͵ı<CDB5><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>浥<EFBFBD><E6B5A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
va_start(args,cmd); //ʹargsָ<73><D6B8><EFBFBD>ɱ<EFBFBD><C9B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
vprintf(cmd,args); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>vprintf<74>ȴ<EFBFBD>V<EFBFBD><56>
|
||||
va_end(args); //<2F><><EFBFBD><EFBFBD><EFBFBD>ɱ<EFBFBD><C9B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD>ȡ
|
||||
}
|
||||
}
|
||||
|
||||
void Dbg_Println(int DbgOptBit ,const char *cmd, ...)
|
||||
{
|
||||
if (DBG_LOG_EN && (Dbg_Switch & (1 << DbgOptBit )))
|
||||
{
|
||||
SysTick_Now = SysTick_1ms;
|
||||
SysTick_Diff = SysTick_Now - SysTick_Last; //<2F><>һ<EFBFBD>δ<EFBFBD>ӡʱ<D3A1><CAB1><EFBFBD><EFBFBD>
|
||||
SysTick_Last = SysTick_Now;
|
||||
sprintf(Dbg_Buffer,"%8.lld [%6.lld]: ",SysTick_Now,SysTick_Diff);
|
||||
DBG_Printf("%s",Dbg_Buffer);
|
||||
va_list args; //<2F><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>va_list<73><74><EFBFBD>͵ı<CDB5><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>浥<EFBFBD><E6B5A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
va_start(args,cmd); //ʹargsָ<73><D6B8><EFBFBD>ɱ<EFBFBD><C9B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
vprintf(cmd,args); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>vprintf<74>ȴ<EFBFBD>V<EFBFBD><56>
|
||||
va_end(args); //<2F><><EFBFBD><EFBFBD><EFBFBD>ɱ<EFBFBD><C9B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD>ȡ
|
||||
DBG_Printf("\n\r");
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
void Dbg_Print_Buff(int DbgOptBit ,const char *cmd ,uint8_t *buff,uint32_t len)
|
||||
{
|
||||
if (DBG_LOG_EN && (Dbg_Switch & (1 << DbgOptBit )))
|
||||
{
|
||||
SysTick_Now = SysTick_1ms;
|
||||
SysTick_Diff = SysTick_Now - SysTick_Last; //<2F><>һ<EFBFBD>δ<EFBFBD>ӡʱ<D3A1><CAB1><EFBFBD><EFBFBD>
|
||||
SysTick_Last = SysTick_Now;
|
||||
sprintf(Dbg_Buffer,"%8.lld [%6.lld]: ",SysTick_Now,SysTick_Diff);
|
||||
DBG_Printf("%s%s",Dbg_Buffer,cmd);
|
||||
for(uint32_t i=0;i<len;i++)
|
||||
{
|
||||
DBG_Printf("%02X ",buff[i]);
|
||||
}
|
||||
DBG_Printf("\n\r");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
1469
BasicCode/Drive/USART/usart.c
Normal file
1469
BasicCode/Drive/USART/usart.c
Normal file
File diff suppressed because it is too large
Load Diff
138
BasicCode/Drive/USART/usart.h
Normal file
138
BasicCode/Drive/USART/usart.h
Normal file
@@ -0,0 +1,138 @@
|
||||
#ifndef _USART_H_
|
||||
#define _USART_H_
|
||||
|
||||
#include "stdint.h"
|
||||
|
||||
#if (USE_CORE_TYPE == 1) //ʹ<><CAB9>C1F<31><46><EFBFBD>İ<EFBFBD>
|
||||
|
||||
/*485<38><35><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
||||
#define MCU485_PIN_1 GPIO_Pin_10 //PA10
|
||||
#define MCU485_PIN_2 GPIO_Pin_11 //PA11
|
||||
#define MCU485_PIN_3 GPIO_Pin_11 //PB11
|
||||
|
||||
#define MCU485_EN1_H GPIOA_SetBits(MCU485_PIN_1)
|
||||
#define MCU485_EN1_L GPIOA_ResetBits(MCU485_PIN_1)
|
||||
#define MCU485_EN2_H GPIOA_SetBits(MCU485_PIN_2)
|
||||
#define MCU485_EN2_L GPIOA_ResetBits(MCU485_PIN_2)
|
||||
#define MCU485_EN3_H GPIOB_SetBits(MCU485_PIN_3)
|
||||
#define MCU485_EN3_L GPIOB_ResetBits(MCU485_PIN_3)
|
||||
|
||||
#elif (USE_CORE_TYPE == 2) //ʹ<><CAB9>C1<43><31><EFBFBD>İ<EFBFBD>
|
||||
|
||||
/*485<38><35><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
||||
#define MCU485_PIN_1 GPIO_Pin_21 //PB21
|
||||
#define MCU485_PIN_2 GPIO_Pin_1 //PA1
|
||||
#define MCU485_PIN_3 GPIO_Pin_0 //PA0
|
||||
|
||||
#define MCU485_EN1_H GPIOB_SetBits(MCU485_PIN_1)
|
||||
#define MCU485_EN1_L GPIOB_ResetBits(MCU485_PIN_1)
|
||||
#define MCU485_EN2_H GPIOA_SetBits(MCU485_PIN_2)
|
||||
#define MCU485_EN2_L GPIOA_ResetBits(MCU485_PIN_2)
|
||||
#define MCU485_EN3_H GPIOA_SetBits(MCU485_PIN_3)
|
||||
#define MCU485_EN3_L GPIOA_ResetBits(MCU485_PIN_3)
|
||||
|
||||
#endif //USE_CORE_TYPE == CORE_TYPE_C1F
|
||||
|
||||
|
||||
#define USART_RecvBuff_Size 1024 //<2F><><EFBFBD>ڽ<EFBFBD><DABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>鶨<EFBFBD><E9B6A8><EFBFBD><EFBFBD>С
|
||||
#define Recv_115200_TimeOut 3 //ms
|
||||
#define UART_BUFFER_SIZE 0x000400
|
||||
|
||||
/********************************************************/
|
||||
//SRAM Uart<72><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ض<EFBFBD><D8B6><EFBFBD>
|
||||
#define SRAM_Uart_Buffer_Size UART_BUFFER_SIZE //<2F><><EFBFBD>ڻ<EFBFBD><DABB><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD>С
|
||||
|
||||
#define SRAM_UART0_RecvBuffer_Start_Addr 0x010000
|
||||
#define SRAM_UART0_RecvBuffer_End_Addr 0x010FFF
|
||||
#define SRAM_UART0_SendBuffer_Start_Addr 0x011000
|
||||
#define SRAM_UART0_SendBuffer_End_Addr 0x011FFF
|
||||
|
||||
#define SRAM_UART1_RecvBuffer_Start_Addr 0x012000
|
||||
#define SRAM_UART1_RecvBuffer_End_Addr 0x012FFF
|
||||
#define SRAM_UART1_SendBuffer_Start_Addr 0x013000
|
||||
#define SRAM_UART1_SendBuffer_End_Addr 0x013FFF
|
||||
|
||||
#define SRAM_UART2_RecvBuffer_Start_Addr 0x014000
|
||||
#define SRAM_UART2_RecvBuffer_End_Addr 0x014FFF
|
||||
#define SRAM_UART2_SendBuffer_Start_Addr 0x015000
|
||||
#define SRAM_UART2_SendBuffer_End_Addr 0x015FFF
|
||||
|
||||
#define SRAM_UART3_RecvBuffer_Start_Addr 0x016000
|
||||
#define SRAM_UART3_RecvBuffer_End_Addr 0x016FFF
|
||||
#define SRAM_UART3_SendBuffer_Start_Addr 0x017000
|
||||
#define SRAM_UART3_SendBuffer_End_Addr 0x017FFF
|
||||
|
||||
|
||||
|
||||
/********************************************************/
|
||||
|
||||
typedef enum
|
||||
{
|
||||
USART_0,
|
||||
USART_1,
|
||||
USART_2,
|
||||
USART_3,
|
||||
USART_NUM,
|
||||
}USART_IDX;
|
||||
|
||||
#pragma pack(1)
|
||||
|
||||
typedef struct
|
||||
{
|
||||
//uint8_t sn;
|
||||
uint8_t sendFlag; //<2F><><EFBFBD>ͱ<EFBFBD>־λ
|
||||
uint8_t sendStatus; //<2F><><EFBFBD><EFBFBD>״̬
|
||||
uint8_t recvFlag;
|
||||
uint8_t recvBuffer[UART_BUFFER_SIZE];
|
||||
|
||||
uint16_t recvLen;
|
||||
uint32_t recvTimeout;
|
||||
uint32_t recvIdleTiming;
|
||||
|
||||
uint32_t TX_Buffer_WriteAddr;
|
||||
uint32_t TX_Buffer_ReadAddr;
|
||||
uint32_t RX_Buffer_WriteAddr;
|
||||
uint32_t RX_Buffer_ReadAddr;
|
||||
}UART_t;
|
||||
|
||||
#pragma pack()
|
||||
|
||||
void USART_INIT(uint8_t usart,uint32_t baudrate);
|
||||
void Set_Uart_recvTimeout(UART_t *set_uart,uint32_t baud);
|
||||
uint8_t Uart0_GetStart(void);
|
||||
uint8_t Uart1_GetStart(void);
|
||||
uint8_t Uart2_GetStart(void);
|
||||
uint8_t Uart3_GetStart(void);
|
||||
void UART0_ChangeBaud(uint32_t baudrate);
|
||||
void UART1_ChangeBaud(uint32_t baudrate);
|
||||
void UART2_ChangeBaud(uint32_t baudrate);
|
||||
void UART3_ChangeBaud(uint32_t baudrate);
|
||||
void MCU485_SendString_0(uint8_t *buf, uint16_t l);
|
||||
void MCU485_SendString_1(uint8_t *buf, uint16_t l);
|
||||
void MCU485_SendString_2(uint8_t *buf, uint16_t l);
|
||||
void MCU485_SendString_3(uint8_t *buf, uint16_t l);
|
||||
void UART0_RECEIVE(void);
|
||||
void UART1_RECEIVE(void);
|
||||
void UART2_RECEIVE(void);
|
||||
void UART3_RECEIVE(void);
|
||||
void Uart2_RECEIVE_Process(void);
|
||||
|
||||
uint8_t Uart_Search_Cmd(uint8_t *buff,uint8_t len);
|
||||
uint8_t Uart_Jump_Cmd(uint8_t *buff,uint8_t len);
|
||||
uint8_t Uart_Search_Cmd_from_SRAM(uint32_t addr, uint8_t len);
|
||||
uint8_t Uart_Jump_Cmd_from_SRAM(uint32_t addr, uint8_t len);
|
||||
void Uart0_Flush(uint16_t over_time);
|
||||
void Uart1_Flush(uint16_t over_time);
|
||||
void Uart2_Flush(uint16_t over_time);
|
||||
void Uart3_Flush(uint16_t over_time);
|
||||
|
||||
void Uart_SendString(uint8_t uart_id,uint8_t* buff,uint16_t len);
|
||||
void MCU485_SendString(uint8_t uart_id,uint8_t* buff,uint16_t len);
|
||||
void MCU485_SendSRAMData(uint8_t uart_id,uint32_t data_addr,uint16_t len);
|
||||
void Write_Uart_SendBuff(uint8_t uart_id,uint8_t uart_outime,uint8_t* buff,uint16_t len);
|
||||
|
||||
|
||||
extern UART_t g_Uart[4];
|
||||
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user