303 lines
		
	
	
		
			6.7 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			303 lines
		
	
	
		
			6.7 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| 
								 | 
							
								#include "driver/ewdriver.h"
							 | 
						|||
| 
								 | 
							
								#include "base/define.h"
							 | 
						|||
| 
								 | 
							
								#include "base/delay.h"
							 | 
						|||
| 
								 | 
							
								//#include "console_usart.h"
							 | 
						|||
| 
								 | 
							
								#include "base/utility.h"
							 | 
						|||
| 
								 | 
							
								//#include "usartapp.h"
							 | 
						|||
| 
								 | 
							
								//#include "arrayfifo.h"
							 | 
						|||
| 
								 | 
							
								//#include "YeCommProtocol.h"
							 | 
						|||
| 
								 | 
							
								#include "hardware/power.h"
							 | 
						|||
| 
								 | 
							
								#include "elec_io.h"
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								#pragma pack(1)
							 | 
						|||
| 
								 | 
							
								typedef struct{
							 | 
						|||
| 
								 | 
							
								uint8_t head[2];//<2F>̶<EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>豸
							 | 
						|||
| 
								 | 
							
								uint16_t frame_len;//<2F><>֡<EFBFBD><D6A1><EFBFBD>ȣ<EFBFBD><C8A3><EFBFBD><EFBFBD><EFBFBD>CRC
							 | 
						|||
| 
								 | 
							
								uint8_t src_addr;//Դ<><D4B4>ַ
							 | 
						|||
| 
								 | 
							
								uint8_t dist_addr;//Ŀ<>ĵ<EFBFBD>ַ
							 | 
						|||
| 
								 | 
							
								uint8_t cmd;//<2F><><EFBFBD><EFBFBD>
							 | 
						|||
| 
								 | 
							
								uint16_t sq;//<2F><>ˮ<EFBFBD><CBAE>
							 | 
						|||
| 
								 | 
							
								}EwCmd_st;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								typedef struct{
							 | 
						|||
| 
								 | 
							
								EwCmd_st head;
							 | 
						|||
| 
								 | 
							
								uint8_t oper_cmd;
							 | 
						|||
| 
								 | 
							
								uint16_t h_v;
							 | 
						|||
| 
								 | 
							
								uint16_t m_v;
							 | 
						|||
| 
								 | 
							
								}EwBusCmd_st;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								typedef struct{
							 | 
						|||
| 
								 | 
							
								EwCmd_st head;
							 | 
						|||
| 
								 | 
							
								uint8_t oper_cmd;
							 | 
						|||
| 
								 | 
							
								uint16_t h_v;
							 | 
						|||
| 
								 | 
							
								uint16_t m_v;
							 | 
						|||
| 
								 | 
							
								uint16_t bus_v;
							 | 
						|||
| 
								 | 
							
								uint32_t cur;
							 | 
						|||
| 
								 | 
							
								uint8_t crc;
							 | 
						|||
| 
								 | 
							
								}EwHartBeatCmd_st;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								typedef struct{
							 | 
						|||
| 
								 | 
							
								EwCmd_st head;
							 | 
						|||
| 
								 | 
							
								uint16_t r_len;
							 | 
						|||
| 
								 | 
							
								uint16_t w_len;
							 | 
						|||
| 
								 | 
							
								uint16_t reate;
							 | 
						|||
| 
								 | 
							
								uint8_t  cmd_delay;
							 | 
						|||
| 
								 | 
							
								uint8_t  buf[64];
							 | 
						|||
| 
								 | 
							
								}EwBusRW_st;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								typedef struct{
							 | 
						|||
| 
								 | 
							
								EwCmd_st head;
							 | 
						|||
| 
								 | 
							
								uint8_t  ack;
							 | 
						|||
| 
								 | 
							
								uint8_t  buf[96];
							 | 
						|||
| 
								 | 
							
								}EwBusRWAck_st;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								typedef struct{
							 | 
						|||
| 
								 | 
							
								EwCmd_st head;
							 | 
						|||
| 
								 | 
							
								uint16_t  w_len;
							 | 
						|||
| 
								 | 
							
								uint16_t cycle;
							 | 
						|||
| 
								 | 
							
								uint16_t count;
							 | 
						|||
| 
								 | 
							
								uint16_t reate;
							 | 
						|||
| 
								 | 
							
								uint8_t  cmd_delay;
							 | 
						|||
| 
								 | 
							
								uint8_t  buf[64];
							 | 
						|||
| 
								 | 
							
								}EwClkAmend_st;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								typedef struct{
							 | 
						|||
| 
								 | 
							
								EwCmd_st head;
							 | 
						|||
| 
								 | 
							
								uint16_t reate;
							 | 
						|||
| 
								 | 
							
								uint8_t  w_len;
							 | 
						|||
| 
								 | 
							
								uint8_t  cmd_delay;
							 | 
						|||
| 
								 | 
							
								uint16_t bitcount;
							 | 
						|||
| 
								 | 
							
								uint8_t  buf[64];
							 | 
						|||
| 
								 | 
							
								}EwInspect_st;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								typedef union{
							 | 
						|||
| 
								 | 
							
									EwCmd_st head;
							 | 
						|||
| 
								 | 
							
									EwBusCmd_st busoper01;
							 | 
						|||
| 
								 | 
							
									EwHartBeatCmd_st heartbeat02;
							 | 
						|||
| 
								 | 
							
									EwBusRW_st busrw03;
							 | 
						|||
| 
								 | 
							
									EwBusRWAck_st busrwack03;
							 | 
						|||
| 
								 | 
							
									EwClkAmend_st clkamend04;
							 | 
						|||
| 
								 | 
							
									EwInspect_st  inspect05;
							 | 
						|||
| 
								 | 
							
									uint8_t buf[128];
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
								}EWCmd_un;
							 | 
						|||
| 
								 | 
							
								#pragma pack()
							 | 
						|||
| 
								 | 
							
								EWCmd_un ewcmd_nu;
							 | 
						|||
| 
								 | 
							
								EwHartBeatCmd_st ew_beat_ack;
							 | 
						|||
| 
								 | 
							
								volatile uint8_t ew_app_rec_flag = 0;
							 | 
						|||
| 
								 | 
							
								volatile uint8_t heard_beat_flag = 0;
							 | 
						|||
| 
								 | 
							
								struct rt_event ew_usart0_rx_event;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								//Ӧ<><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
							 | 
						|||
| 
								 | 
							
								static void EW_AckCmd(EWCmd_un* cmd_un)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
									uint8_t uc_temp = cmd_un->head.src_addr;
							 | 
						|||
| 
								 | 
							
									uint8_t uc_last_dist = cmd_un->head.dist_addr;
							 | 
						|||
| 
								 | 
							
									uint8_t uc_crc = 0;
							 | 
						|||
| 
								 | 
							
									cmd_un->head.frame_len++;//<2F><><EFBFBD>Ȱ<EFBFBD><C8B0><EFBFBD>CRC
							 | 
						|||
| 
								 | 
							
									cmd_un->head.src_addr =  Gpio_GetDeivceAddr();//cmd_un->head.src_addr;  
							 | 
						|||
| 
								 | 
							
									cmd_un->head.dist_addr = uc_temp;
							 | 
						|||
| 
								 | 
							
								 	uc_crc = CheckCRC_8(cmd_un->buf,cmd_un->head.frame_len-1);
							 | 
						|||
| 
								 | 
							
									cmd_un->buf[cmd_un->head.frame_len-1] = uc_crc;   
							 | 
						|||
| 
								 | 
							
									ConsoleUsart_send_bytes(cmd_un->buf,cmd_un->head.frame_len);
							 | 
						|||
| 
								 | 
							
								    //ConsoleUsart0DMA_send_bytes(cmd_un->yecmdbuf,cmd_un->head.frame_len,10);
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								static void EW_BusCmd01(EWCmd_un* cmd_un)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
									if(cmd_un->busoper01.oper_cmd == 1)
							 | 
						|||
| 
								 | 
							
									{
							 | 
						|||
| 
								 | 
							
										PowerCalibration_set(cmd_un->busoper01.h_v,cmd_un->busoper01.m_v);
							 | 
						|||
| 
								 | 
							
										EW_DIFF_MOD_H;
							 | 
						|||
| 
								 | 
							
									}else{
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
										PowerCalibration_set(POWER_DEF_V,POWER_DEF_V-10);
							 | 
						|||
| 
								 | 
							
										EW_BUS_OFF
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									cmd_un->head.frame_len = sizeof(EwCmd_st);
							 | 
						|||
| 
								 | 
							
									cmd_un->buf[cmd_un->head.frame_len] = 0;
							 | 
						|||
| 
								 | 
							
									cmd_un->head.frame_len++;
							 | 
						|||
| 
								 | 
							
									EW_AckCmd(cmd_un);
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								static void EW_HeartBeatCmd02(EWCmd_un* cmd_un)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
									heard_beat_flag = cmd_un->heartbeat02.oper_cmd;
							 | 
						|||
| 
								 | 
							
									memcpy(&ew_beat_ack,cmd_un,sizeof(EwCmd_st)); 
							 | 
						|||
| 
								 | 
							
									cmd_un->head.frame_len = sizeof(EwCmd_st);
							 | 
						|||
| 
								 | 
							
									cmd_un->buf[cmd_un->head.frame_len] = 0;
							 | 
						|||
| 
								 | 
							
									cmd_un->head.frame_len++;
							 | 
						|||
| 
								 | 
							
									EW_AckCmd(cmd_un);
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								extern uint16_t EW_DMOD_READ_Timeout;
							 | 
						|||
| 
								 | 
							
								static void EW_RWCmd03(EWCmd_un* cmd_un)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
									uint8_t auc_ew_head[2];
							 | 
						|||
| 
								 | 
							
									uint8_t uc_ack = 0;
							 | 
						|||
| 
								 | 
							
									uint16_t ul_readlen = cmd_un->busrw03.r_len;
							 | 
						|||
| 
								 | 
							
									auc_ew_head[0] = cmd_un->busrw03.buf[0];
							 | 
						|||
| 
								 | 
							
									auc_ew_head[1] = cmd_un->busrw03.buf[1];
							 | 
						|||
| 
								 | 
							
									if(cmd_un->busrw03.w_len > 0)
							 | 
						|||
| 
								 | 
							
									{
							 | 
						|||
| 
								 | 
							
										__disable_irq();
							 | 
						|||
| 
								 | 
							
										DMod_SendBytes(cmd_un->busrw03.buf,cmd_un->busrw03.w_len, cmd_un->busrw03.reate,ul_readlen);
							 | 
						|||
| 
								 | 
							
										__enable_irq();
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									delay_ms(cmd_un->busrw03.cmd_delay);
							 | 
						|||
| 
								 | 
							
									if(ul_readlen > 0)
							 | 
						|||
| 
								 | 
							
									{
							 | 
						|||
| 
								 | 
							
										__disable_irq();
							 | 
						|||
| 
								 | 
							
										uc_ack = DMod_FireBusReadDatasV2(cmd_un->busrwack03.buf,ul_readlen,EW_DMOD_READ_Timeout);
							 | 
						|||
| 
								 | 
							
										__enable_irq();
							 | 
						|||
| 
								 | 
							
										if(ul_readlen == 2 && uc_ack == 0)
							 | 
						|||
| 
								 | 
							
										{
							 | 
						|||
| 
								 | 
							
											
							 | 
						|||
| 
								 | 
							
											if(auc_ew_head[0] != cmd_un->busrwack03.buf[0] || auc_ew_head[1] != cmd_un->busrwack03.buf[1])
							 | 
						|||
| 
								 | 
							
											{
							 | 
						|||
| 
								 | 
							
												uc_ack = 10;
							 | 
						|||
| 
								 | 
							
											}
							 | 
						|||
| 
								 | 
							
										}else if(ul_readlen > 2 && uc_ack == 0)
							 | 
						|||
| 
								 | 
							
										{
							 | 
						|||
| 
								 | 
							
											if(cmd_un->busrwack03.buf[ul_readlen-1] != CheckCRC_8(cmd_un->busrwack03.buf,ul_readlen-1))
							 | 
						|||
| 
								 | 
							
											{
							 | 
						|||
| 
								 | 
							
												uc_ack = 11;
							 | 
						|||
| 
								 | 
							
											}
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									cmd_un->busrwack03.ack = uc_ack;
							 | 
						|||
| 
								 | 
							
									cmd_un->busrwack03.head.frame_len  = sizeof(EwCmd_st) +1+ ul_readlen;
							 | 
						|||
| 
								 | 
							
									EW_AckCmd(cmd_un);
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								static void EW_ClkAmendCmd04(EWCmd_un* cmd_un)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
									uint16_t us_cycle = cmd_un->clkamend04.cycle;
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
										__disable_irq();
							 | 
						|||
| 
								 | 
							
										DMod_SendBytes(cmd_un->clkamend04.buf,cmd_un->clkamend04.w_len, cmd_un->clkamend04.reate,0);
							 | 
						|||
| 
								 | 
							
										__enable_irq();
							 | 
						|||
| 
								 | 
							
									delay_ms(cmd_un->clkamend04.cmd_delay);
							 | 
						|||
| 
								 | 
							
									EW_SendTrimSquare(us_cycle,us_cycle>>1,cmd_un->clkamend04.count);
							 | 
						|||
| 
								 | 
							
									cmd_un->busrwack03.ack = 0;
							 | 
						|||
| 
								 | 
							
									cmd_un->busrwack03.head.frame_len  = sizeof(EwCmd_st) +1;
							 | 
						|||
| 
								 | 
							
									EW_AckCmd(cmd_un);
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								static void EW_InspectCmd05(EWCmd_un* cmd_un)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
									uint16_t us_cycle = cmd_un->clkamend04.cycle;
							 | 
						|||
| 
								 | 
							
									uint16_t us_count = 0;
							 | 
						|||
| 
								 | 
							
									us_count = cmd_un->inspect05.bitcount;
							 | 
						|||
| 
								 | 
							
										__disable_irq();
							 | 
						|||
| 
								 | 
							
										DMod_SendBytes(cmd_un->inspect05.buf,cmd_un->inspect05.w_len, cmd_un->inspect05.reate,1);
							 | 
						|||
| 
								 | 
							
										__enable_irq();
							 | 
						|||
| 
								 | 
							
									delay_ms(cmd_un->inspect05.cmd_delay);
							 | 
						|||
| 
								 | 
							
									cmd_un->busrwack03.ack = 0;
							 | 
						|||
| 
								 | 
							
									DMod_ReadInspect_Data(us_count,cmd_un->busrwack03.buf);
							 | 
						|||
| 
								 | 
							
									cmd_un->busrwack03.head.frame_len  = sizeof(EwCmd_st) +((us_count+7)>>3)+1;
							 | 
						|||
| 
								 | 
							
									EW_AckCmd(cmd_un);
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								void EW_DoCmd(EWCmd_un* cmd_un)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
									switch(cmd_un->head.cmd)
							 | 
						|||
| 
								 | 
							
									{
							 | 
						|||
| 
								 | 
							
										case 0x01: EW_BusCmd01(cmd_un);break;
							 | 
						|||
| 
								 | 
							
										case 0x02: EW_HeartBeatCmd02(cmd_un);break; 
							 | 
						|||
| 
								 | 
							
										case 0x03: EW_RWCmd03(cmd_un); break;
							 | 
						|||
| 
								 | 
							
										case 0x04: EW_ClkAmendCmd04(cmd_un);break;
							 | 
						|||
| 
								 | 
							
										case 0x05: EW_InspectCmd05(cmd_un);break;
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								static void DoHeartBeat()
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
									uint8_t uc_crc;
							 | 
						|||
| 
								 | 
							
									ew_beat_ack.oper_cmd = 1;
							 | 
						|||
| 
								 | 
							
									ew_beat_ack.h_v = Power_GetHPowerV();
							 | 
						|||
| 
								 | 
							
									ew_beat_ack.m_v = Power_GetMPowerV();
							 | 
						|||
| 
								 | 
							
									ew_beat_ack.bus_v = Power_GetBousV();
							 | 
						|||
| 
								 | 
							
									ew_beat_ack.cur = Power_GetCurrent();
							 | 
						|||
| 
								 | 
							
									ew_beat_ack.head.frame_len = sizeof(EwHartBeatCmd_st);
							 | 
						|||
| 
								 | 
							
									uc_crc = CheckCRC_8((uint8_t*)&ew_beat_ack,ew_beat_ack.head.frame_len-1);
							 | 
						|||
| 
								 | 
							
									ew_beat_ack.crc = uc_crc;
							 | 
						|||
| 
								 | 
							
									ConsoleUsart_send_bytes((uint8_t*)&ew_beat_ack,ew_beat_ack.head.frame_len);
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								void EWUsartApp_Task(void* param)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
									rt_uint32_t event;
							 | 
						|||
| 
								 | 
							
								  uint32_t idle_count = 0;
							 | 
						|||
| 
								 | 
							
									UNUSED(param);	
							 | 
						|||
| 
								 | 
							
									rt_event_init(&ew_usart0_rx_event, "ew_usart_rx_e", RT_IPC_FLAG_PRIO);
							 | 
						|||
| 
								 | 
							
									ew_app_rec_flag = 0;
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									while(1)
							 | 
						|||
| 
								 | 
							
									{
							 | 
						|||
| 
								 | 
							
											if(idle_count > 9)
							 | 
						|||
| 
								 | 
							
											{
							 | 
						|||
| 
								 | 
							
												idle_count = 0;
							 | 
						|||
| 
								 | 
							
												if(heard_beat_flag > 0)
							 | 
						|||
| 
								 | 
							
												{
							 | 
						|||
| 
								 | 
							
													DoHeartBeat();
							 | 
						|||
| 
								 | 
							
												}
							 | 
						|||
| 
								 | 
							
											}
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
											if(rt_event_recv(&ew_usart0_rx_event, UART_MC_FRAME_EVENT,RT_EVENT_FLAG_OR | RT_EVENT_FLAG_CLEAR,100, &event) != RT_EOK)
							 | 
						|||
| 
								 | 
							
											{
							 | 
						|||
| 
								 | 
							
												idle_count++;
							 | 
						|||
| 
								 | 
							
												continue;
							 | 
						|||
| 
								 | 
							
											}
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
											if((event & UART_MC_FRAME_EVENT) > 0)
							 | 
						|||
| 
								 | 
							
											{
							 | 
						|||
| 
								 | 
							
											ConsoleRxDisable();
							 | 
						|||
| 
								 | 
							
											if(ewcmd_nu.buf[0]=='E' && ewcmd_nu.buf[1] == 'w')
							 | 
						|||
| 
								 | 
							
											{
							 | 
						|||
| 
								 | 
							
													
							 | 
						|||
| 
								 | 
							
													if(ewcmd_nu.buf[ewcmd_nu.head.frame_len-1] == CheckCRC_8(ewcmd_nu.buf,ewcmd_nu.head.frame_len-1))
							 | 
						|||
| 
								 | 
							
													{
							 | 
						|||
| 
								 | 
							
														
							 | 
						|||
| 
								 | 
							
														EW_DoCmd(&ewcmd_nu);
							 | 
						|||
| 
								 | 
							
													}
							 | 
						|||
| 
								 | 
							
												
							 | 
						|||
| 
								 | 
							
											}			
							 | 
						|||
| 
								 | 
							
											ConsoleRxEnable();
							 | 
						|||
| 
								 | 
							
											ew_app_rec_flag = 0;
							 | 
						|||
| 
								 | 
							
											}
							 | 
						|||
| 
								 | 
							
													
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								/*
							 | 
						|||
| 
								 | 
							
								@brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
							 | 
						|||
| 
								 | 
							
								@param buf Դ<EFBFBD><EFBFBD><EFBFBD>ݻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ռ<EFBFBD>
							 | 
						|||
| 
								 | 
							
								@paran len <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵij<EFBFBD><EFBFBD><EFBFBD>
							 | 
						|||
| 
								 | 
							
								@rtv <EFBFBD><EFBFBD>
							 | 
						|||
| 
								 | 
							
								*/
							 | 
						|||
| 
								 | 
							
								void EW_UsartApp_Push_Cmd(uint8_t* buf, uint16_t len)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
									if(ew_app_rec_flag > 0)
							 | 
						|||
| 
								 | 
							
									{
							 | 
						|||
| 
								 | 
							
										return;
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									if(len > sizeof(EWCmd_un))
							 | 
						|||
| 
								 | 
							
									{
							 | 
						|||
| 
								 | 
							
										len = sizeof(EWCmd_un);
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									rt_memcpy((void*)&ewcmd_nu,buf,len);
							 | 
						|||
| 
								 | 
							
									rt_event_send(&ew_usart0_rx_event,UART_MC_FRAME_EVENT);//<2F><><EFBFBD>ʹ<EFBFBD><CDB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽ<EFBFBD><DDBD><EFBFBD><EFBFBD>¼<EFBFBD>
							 | 
						|||
| 
								 | 
							
									ew_app_rec_flag = 1;
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 |