浏览代码

新增透传

libo 3 年之前
父节点
当前提交
1762c623c5
共有 1 个文件被更改,包括 50 次插入3 次删除
  1. 50 3
      Src/freertos.c

+ 50 - 3
Src/freertos.c

@@ -94,6 +94,7 @@ int formatStr(uint16_t *bufTextCang02_IO000, uint8_t *Cang02_IO000, uint8_t cang
 
 int formatStrCang01(uint16_t *bufTextCang01_IO000, uint8_t *Cang01_IO000, uint8_t cangNum); //可以显示兼容的老式协议
 
+SDateTime m_datetime;
 static int FRAM_cnt = 0;
 uint8_t vt_disp_type=0;
 uint32_t cntUsage = 0; //统计cpu利用率
@@ -143,6 +144,44 @@ sT2C_ALL_Sensor_Data_Each_Cang *pT2C_ALL_Sensor_Data_Disp = &T2C_ALL_Sensor_Data
 
 /* Private function prototypes -----------------------------------------------*/
 /* USER CODE BEGIN FunctionPrototypes */
+void InitSensorScanParam(void)
+{
+	uint8_t data[16];
+	
+	FM25L16B_Read_N_Bytes(ADDR_Sensor_Scan_Param, data, 16);
+	if(data[0] == 0x5A){
+		uint8_t *buf = data+1;
+		Pass41SensorScanParam.enable = 1;
+		if(buf[0] > 1 && buf[1] > 0){
+			Pass41SensorScanParam.step = buf[0];
+			Pass41SensorScanParam.nstep = buf[1];
+			if(buf[2] > 0 && buf[2] <= 8){
+				Pass41SensorScanParam.cmd_num = buf[2];
+				for (int n = 0; n < Pass41SensorScanParam.cmd_num; n++){
+					Pass41SensorScanParam.cmd_arr[n] = buf[3+n];
+				}
+			}else{
+				Pass41SensorScanParam.cmd_num = 2;
+				Pass41SensorScanParam.cmd_arr[0] = 0x40;
+				Pass41SensorScanParam.cmd_arr[1] = 0x91;
+			}	
+		}else{
+			Pass41SensorScanParam.step = 5;
+			Pass41SensorScanParam.nstep = 6;
+			Pass41SensorScanParam.cmd_num = 2;
+			Pass41SensorScanParam.cmd_arr[0] = 0x40;
+			Pass41SensorScanParam.cmd_arr[1] = 0x91;
+		}
+	}else{
+		Pass41SensorScanParam.enable = 0;
+		Pass41SensorScanParam.step = 5;
+		Pass41SensorScanParam.nstep = 6;
+		Pass41SensorScanParam.cmd_num = 2;
+		Pass41SensorScanParam.cmd_arr[0] = 0x40;
+		Pass41SensorScanParam.cmd_arr[1] = 0x91;
+	}
+}
+
 void ControllerConfig_Init(void)
 {
 	//	uint8_t t000;
@@ -386,6 +425,9 @@ void ControllerConfig_Init(void)
 
 	vt_disp_type = FM25L16B_ReadByte(ADDR_DISP_VT_TYPE);
 	flag_En_BlankSeal = FM25L16B_ReadByte(ADDR_Enable_BlankSeal);
+
+    // 开机初始化读取,SensorScanParam
+	InitSensorScanParam();
 }
 /* USER CODE END FunctionPrototypes */
 
@@ -967,6 +1009,11 @@ void Task_Usart1_Terminal(void const *argument)
 		xEventGroupSetBits(xCreatedEventGroup, TASK_BIT_2);
 		osDelay(10); //阻塞延时,根据情况调节------保证每秒钟可以接收4帧数据,50*Nms休眠时间
 
+		// xy,新透传,41串口透传,模拟F3轮询传感器,构建数据
+		if(Pass41SensorScanParam.enable && i_task01 % 100 == 99) 
+		{
+			DoInternalSensorScanAndPost();
+		}
 	} //while(1)
 	  /* USER CODE END Task_Usart1_Terminal */
 }
@@ -978,7 +1025,6 @@ void Task_Usart1_Terminal(void const *argument)
 * @retval None
 */
 /* USER CODE END Header_Task_GetCPU_Usage */
-SDateTime m_datetime;
 void Task_GetCPU_Usage(void const *argument)
 {
 	/* USER CODE BEGIN Task_GetCPU_Usage */
@@ -995,10 +1041,11 @@ void Task_GetCPU_Usage(void const *argument)
 		//DispRunInfo();//显示运行信息
 		cntUsage++;
 		osDelay(500); //阻塞延时,根据情况调节
-		if(m_datetime.min!=min)
+		//2022-9-13, xy, 这里RTC时钟是按每分钟去读取一下RTC芯片校时的,但实在没必要如此频繁,优化成每小时
+		if(m_datetime.hour!=hour)
 		{
 			ds1302_SynTime(&m_datetime);
-			min = m_datetime.min;
+			hour = m_datetime.hour;
 		}
 		uxBits = xEventGroupWaitBits(xCreatedEventGroup, /* 事件标志组句柄 */
                                      TASK_BIT_ALL,       /* 等待TASK_BIT_ALL被设置 */