Przeglądaj źródła

增加:增加can接收线程打印报文互斥锁,避免打印CAN接收报文时混乱的情况。

EWen 3 miesięcy temu
rodzic
commit
a19ae53e3a
2 zmienionych plików z 8 dodań i 1 usunięć
  1. 2 1
      README.md
  2. 6 0
      app_public/fuxi_public/fuxi_bsp/source/flexcan.c

+ 2 - 1
README.md

@@ -67,4 +67,5 @@
 01. 增加: 线损维护串口切换功能。
 02. 修改: 频率更新处理,共享内存读回第二组频率对应的是第一组电压的,所以F1与F2读取索引调换。
 03. 修改: 级联线损电度更新去除投退判断。
-04. 修改: 去除保护逻辑判断错误返回条件。
+04. 修改: 去除保护逻辑判断错误返回条件。
+05. 增加:增加can接收线程打印报文互斥锁,避免打印CAN接收报文时混乱的情况。

+ 6 - 0
app_public/fuxi_public/fuxi_bsp/source/flexcan.c

@@ -256,6 +256,7 @@ static struct can_dev g_can_dev[CAN_BUS_NUM] __attribute__ ((aligned(4)));
 FN_CAN_RECV_CALLBACK g_can_recv_callback;
 
 u8 g_app_buf_tx[CAN_PRIO_MAX][CAN_FRAME_LEN_MAX];	//应用可根据优先级申请的长帧缓冲区
+static pthread_mutex_t     printf_mutex;
 
 extern int g_print_can;
 extern int g_print_can_monitor;
@@ -544,6 +545,8 @@ int can_init(void)
     }
     fflush(stdout);
 
+	pthread_mutex_init(&printf_mutex, NULL);
+
 	//初始化缓冲区
 	memset(g_can_dev,0,sizeof(g_can_dev));
 	
@@ -1253,7 +1256,10 @@ static int _can_frame_short2long(struct can_dev *dev, int prior)
 	// 打印报文
 	if(g_print_can)
 	{
+		// 增加can报文打印互斥锁,避免CAN0、CAN1两个接收线程打印混乱的情况
+		pthread_mutex_lock(&printf_mutex);
 		print_msg("RX_CAN:",pd,pd[3] + CAN_LONGFRAME_HEAD_LEN);
+		pthread_mutex_unlock(&printf_mutex);
 	}
 
 	// 回调处理此长帧