瀏覽代碼

串口调试

yidong.fan 3 周之前
父節點
當前提交
de335132e1

+ 0 - 2
WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/file/Motor.c

@@ -55,12 +55,10 @@ float sigmoid(float x) {
 void SetMotorX(unsigned long int Pulses,unsigned int spd,unsigned long int *AccPLS,unsigned long int *constVPLS)
 {
 	float deno ;
-	float melo ;
 	float fre;
 	float flexible=MOTORX_XFLEXIBLE;
     float x_scale;
     unsigned int i;
-    unsigned int Prd;	
 	unsigned long int accPlus;
 	static unsigned int lastspd=0;
 	if(spd < g_tEE.uiXSpeedMin)spd = g_tEE.uiXSpeedMin;

+ 11 - 277
WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/file/Uart.c

@@ -133,6 +133,12 @@ void InitUart3(void) {
     U3STAbits.UTXEN = 1;
     IPC20bits.U3RXIP = 7;
     IPC20bits.U3TXIP = 7;
+	sysComUart_header = 0;
+	sysComUart_last = 0;
+
+
+
+	
 }
 /*******************************************************************************
  * 函数名称:Uart1Send
@@ -238,10 +244,10 @@ void  __attribute__((__interrupt__,no_auto_psv)) _U2RXInterrupt(void)
 void  __attribute__((__interrupt__,no_auto_psv)) _U3RXInterrupt(void)
 {
 	IFS5bits.U3RXIF = 0;                                                
-//    g_ucU3RX_Buf[uart3_last++] = U3RXREG;
-//	if(uart3_last == MAX_UART_BUFFER_SIZE){
-//		uart3_last = 0;
-//	}
+    g_ucSysComRX_Buf[sysComUart_last++] = U3RXREG;
+	if(sysComUart_last == MAX_COM_UART_BUFFER_SIZE){
+		sysComUart_last = 0;
+	}
 }
 
 /*******************************************************************************
@@ -1726,276 +1732,4 @@ void my_send_char(char ch){
  	 g_ucU3TX_buf[g_ucU3TX_Last++] = ch;
 }
 
-// 返回值为打印字符的个数
-// 支持%d,%o, %x,%s,%c,%f(只打印6位数字)
-//int my_printf(const char* str, ...)
-//{
-//    if (str == NULL) return -1;
-//
-//	uint32_t ret_num = 0;// 返回打印字符的个数
-//    char* pStr = (char*)str;// 指向str
-//    int ArgIntVal = 0;  // 接收整型
-//    uint32_t ArgHexVal = 0;// 接十六进制
-//    char* ArgStrVal = NULL;  // 接收字符型
-//    double ArgFloVal = 0.0; // 接受浮点型
-//    uint32_t val_seg = 0;   // 数据切分
-//    uint32_t val_temp = 0;  // 临时保存数据
-//    int cnt = 0;       // 数据长度计数
-//    int cnt_float = 0;       // 数据长度计数
-//    int i = 0;
-//    
-//    va_list pArgs; // 定义va_list类型指针,用于存储参数的地址
-//    va_start(pArgs, str); // 初始化pArgs
-//    if(g_ucU3TX_Last > 0){
-//		return 0;
-//	}
-//    while (*pStr != '\0')
-//    {
-//        switch (*pStr)
-//        {
-//        case ' ':
-//        case '\r':
-//        case '\n':
-//            my_send_char(*pStr); ret_num++; break;
-//        case '\t':
-//            my_send_char(*pStr); ret_num += 4; break;
-//        case '%':
-//            pStr++;
-//            // % 格式解析
-//
-//			if('.' == *pStr)
-//			{
-//            	pStr++;
-//				cnt_float = *pStr - '0';// %.Nf,输出指定位数小数
-//                pStr++;
-//			}
-//			
-//            switch (*pStr)
-//            {
-//            case '%':
-//                my_send_char('%');// %%,输出%
-//                ret_num++;
-//                pStr++;
-//				continue;
-//            case 'c':
-//                ArgIntVal = va_arg(pArgs, int);// %c,输出char
-//                my_send_char((char)ArgIntVal);
-//                ret_num++;
-//                pStr++;
-//				continue;
-//            case 'd':
-//                // 接收整型
-//                ArgIntVal = va_arg(pArgs, int);
-//                if (ArgIntVal < 0)// 如果为负数打印,负号
-//                {
-//                    ArgIntVal = -ArgIntVal;// 取相反数
-//
-//                    my_send_char('-');
-//                    ret_num++;
-//                }
-//                val_seg = ArgIntVal;// 赋值给 val_seg处理数据
-//                // 计算ArgIntVal长度
-//                if (ArgIntVal)
-//                {
-//                    while (val_seg) {
-//                        cnt++;
-//                        val_seg /= 10;
-//                    }
-//                }
-//                else cnt = 1;// 数字0的长度为1
-//
-//                ret_num += cnt;// 字符个数加上整数的长度
-//
-//                // 将整数转为单个字符打印
-//                while (cnt)
-//                {
-//                    val_seg = ArgIntVal / m_pow_n(10, cnt - 1);
-//                    ArgIntVal %= m_pow_n(10, cnt - 1);
-//                    my_send_char((char)val_seg + '0');
-//                    cnt--;
-//                }
-//                pStr++;
-//                continue;
-//            case 'o':
-//                // 接收整型
-//                ArgIntVal = va_arg(pArgs, int);
-//                if (ArgIntVal < 0)// 如果为负数打印,负号
-//                {
-//                    ArgIntVal = -ArgIntVal;// 取相反数
-//
-//                    my_send_char('-');
-//                    ret_num++;
-//                }
-//                val_seg = ArgIntVal;// 赋值给 val_seg处理数据
-//                // 计算ArgIntVal长度
-//                if (ArgIntVal)
-//                {
-//                    while (val_seg) {
-//                        cnt++;
-//                        val_seg /= 8;
-//                    }
-//                }
-//                else cnt = 1;// 数字0的长度为1
-//
-//                ret_num += cnt;// 字符个数加上整数的长度
-//
-//                // 将整数转为单个字符打印
-//                while (cnt)
-//                {
-//                    val_seg = ArgIntVal / m_pow_n(8, cnt - 1);
-//                    ArgIntVal %= m_pow_n(8, cnt - 1);
-//                    my_send_char((char)val_seg + '0');
-//                    cnt--;
-//                }
-//                pStr++;
-//				continue;
-//            case 'x':
-//                // 接收16进制
-//                ArgHexVal = va_arg(pArgs, uint32_t);
-//                val_seg = ArgHexVal;
-//                // 计算ArgIntVal长度
-//                if (ArgHexVal)
-//                {
-//                    while (val_seg) {
-//                        cnt++;
-//                        val_seg /= 16;
-//                    }
-//                }
-//                else cnt = 1;// 数字0的长度为1
-//
-//                ret_num += cnt;// 字符个数加上整数的长度
-//                // 将整数转为单个字符打印
-//                while (cnt)
-//                {
-//                    val_seg = ArgHexVal / m_pow_n(16, cnt - 1);
-//                    ArgHexVal %= m_pow_n(16, cnt - 1);
-//                    if (val_seg <= 9)
-//                        my_send_char((char)val_seg + '0');
-//                    else
-//                    {
-//						//my_send_char((char)val_seg - 10 + 'a'); //小写字母
-//                        my_send_char((char)val_seg - 10 + 'A');
-//                    }
-//                    cnt--;
-//                }
-//                pStr++;
-//				continue;
-//            case 'b':
-//                // 接收整型
-//                ArgIntVal = va_arg(pArgs, int);
-//                val_seg = ArgIntVal;
-//                // 计算ArgIntVal长度
-//                if (ArgIntVal)
-//                {
-//                    while (val_seg) {
-//                        cnt++;
-//                        val_seg /= 2;
-//                    }
-//                }
-//                else cnt = 1;// 数字0的长度为1
-//
-//                ret_num += cnt;// 字符个数加上整数的长度
-//                // 将整数转为单个字符打印
-//                while (cnt)
-//                {
-//                    val_seg = ArgIntVal / m_pow_n(2, cnt - 1);
-//                    ArgIntVal %= m_pow_n(2, cnt - 1);
-//                    my_send_char((char)val_seg + '0');
-//                    cnt--;
-//                }
-//                pStr++;
-//				continue;
-//            case 's':
-//                // 接收字符
-//                ArgStrVal = va_arg(pArgs, char*);
-//                ret_num += (uint32_t)strlen(ArgStrVal);
-//                while (*ArgStrVal)
-//                {
-//                    my_send_char(*ArgStrVal);
-//                    ArgStrVal++;
-//                }
-//
-//                pStr++;
-//				continue;
-//
-//            case 'f':
-//                // 接收浮点型 保留6为小数,不采取四舍五入
-//                ArgFloVal = va_arg(pArgs, double);
-//				
-//                if (ArgFloVal < 0)// 如果为负数打印,负号
-//                {
-//                    ArgFloVal = -ArgFloVal;// 取相反数
-//
-//                    my_send_char('-');
-//                    ret_num++;
-//                }
-//                val_seg = (uint32_t)ArgFloVal;// 取整数部分
-//                val_temp = val_seg;      // 临时保存整数部分数据
-//                ArgFloVal = ArgFloVal - val_seg;// 得出余下的小数部分
-//                // 计算整数部分长度
-//                if (val_seg)
-//                {
-//                    while (val_seg) {
-//                        cnt++;
-//                        val_seg /= 10;
-//                    }
-//                }
-//                else cnt = 1;// 数字0的长度为1
-//                ret_num += cnt;// 字符个数加上整数的长度
-//                // 将整数转为单个字符打印
-//                while (cnt)
-//                {
-//                    val_seg = val_temp / m_pow_n(10, cnt - 1);
-//                    val_temp %= m_pow_n(10, cnt - 1);
-//                    my_send_char((char)val_seg + '0');
-//                    cnt--;
-//                }
-//                // 打印小数点
-//                my_send_char('.');
-//                ret_num++;
-//                // printf("\r\n %f\r\n", ArgFloVal);
-//				if(cnt_float == 0)
-//                	cnt_float = 6;
-//					
-//                // 开始输出小数部分
-//                //ArgFloVal *= 1000000;
-//                ArgFloVal *= m_pow_n(10, cnt_float);
-//
-//                val_temp = (int)ArgFloVal;// 取整数部分
-//                while (cnt_float)
-//                {
-//                    val_seg = val_temp / m_pow_n(10, cnt_float - 1);
-//                    val_temp %= m_pow_n(10, cnt_float - 1);
-//                    my_send_char((char)val_seg + '0');
-//                    cnt_float--;
-//                }
-//                ret_num += 6;
-//                pStr++;
-//				continue;
-//            default:// % 匹配错误,暂输出空格
-//				my_send_char(' '); ret_num++;
-//				break;
-//            }
-//			break;
-//
-//
-//        default:
-//            my_send_char(*pStr); ret_num++;
-//            break;
-//        }
-//        pStr++;
-//    }
-//    va_end(pArgs);// 结束取参数
-//
-//	for(int i;i<ret_num;i++){
-//		g_ucU3TX_Data[i] = g_ucU3TX_buf[i];
-//	}
-//	g_ucU3TX_Last = 0;
-//    while(DMA2CONbits.CHEN);        
-//    DMA2CNT=(ret_num-1);
-//    DMA2CONbits.CHEN  = 1;		
-//    DMA2REQbits.FORCE = 1;	
-//
-//    
-//    return ret_num;
-//}
+

+ 8 - 4
WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/file/Uart.h

@@ -1,6 +1,8 @@
 #ifndef __UART_H
 #define	__UART_H
 
+#include "wzyx_protocol.h"
+
 #ifdef  __UART_DEF
 #define EXTERN_UART
 #else
@@ -74,7 +76,7 @@
 #define     ZLENTH                   14000
 #define     ZLENTH1                  134
 #define     ZLENTH2                  198
-#define     MAX_UART_BUFFER_SIZE                  512
+#define     MAX_COM_UART_BUFFER_SIZE                  512
 
 
 //оƬ¼ì²â
@@ -138,9 +140,11 @@ EXTERN_UART unsigned int g_uiLth1,GlobalNum;
 EXTERN_UART unsigned long g_ulRSUM1;
 EXTERN_UART unsigned char g_ucCRC1;
 //
-//EXTERN_UART unsigned char g_ucU3RX_Buf[512];
-//EXTERN_UART uint32_t   uart3_header = 0;
-//EXTERN_UART uint32_t   uart3_last = 0;
+EXTERN_UART unsigned char g_ucSysComRX_Buf[MAX_COM_UART_BUFFER_SIZE];
+EXTERN_UART uint32_t   sysComUart_header;
+EXTERN_UART uint32_t   sysComUart_last;
+EXTERN_UART unsigned char g_ucsysCom_data[MAX_COM_UART_BUFFER_SIZE];
+EXTERN_UART CmdMessageDef   sysCom_header;
 
 
 EXTERN_UART unsigned char g_ucRealTemp_Chanel;

+ 11 - 1
WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/file/main.c

@@ -140,8 +140,15 @@ int main(void) {
 			s10flag = 0;
 			systemp = DS18GetTemp();
 		}
+		if(((sysComUart_last + MAX_COM_UART_BUFFER_SIZE - sysComUart_header) % MAX_COM_UART_BUFFER_SIZE) >= 8){
+			if(DecodeNew(&sysCom_header,g_ucsysCom_data,g_ucSysComRX_Buf, &sysComUart_header,sysComUart_last,MAX_COM_UART_BUFFER_SIZE))
+			{
+				sysCom_header.data = g_ucsysCom_data;
+				/*ÏûÏ¢´¦Àí*/
+			}
+		}
+
 
-		
         if(printtempFlag == 1){  
             printtempFlag = 0;   
 			for(i=0;i<6;i++){
@@ -157,6 +164,9 @@ int main(void) {
 //				*(float *)(buf+16+i*20)=5.5;
 			}
 			packMsgAndsend(0x17,0,buf,120);
+
+
+			
 //			 if(!TempChn[0].cPeltierRun)
 //			 {  
 //			 	

+ 1 - 2
WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/nbproject/private/private.xml

@@ -3,10 +3,9 @@
     <editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/2" lastBookmarkId="0"/>
     <open-files xmlns="http://www.netbeans.org/ns/projectui-open-files/2">
         <group>
-            <file>file:/F:/library/source/WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/file/Delay.c</file>
+            <file>file:/F:/library/source/WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/file/Uart.c</file>
             <file>file:/F:/library/source/WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/file/Motor.c</file>
             <file>file:/F:/library/source/WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/file/main.c</file>
-            <file>file:/F:/library/source/WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/file/Interrupt.c</file>
         </group>
     </open-files>
 </project-private>