Skip to content

Commit 3784a1c

Browse files
committed
更新IAP状态图,大幅更新CAN外设驱动,以及其他小更新
1 parent 64fd64f commit 3784a1c

File tree

11 files changed

+341
-159
lines changed

11 files changed

+341
-159
lines changed
39.8 KB
Binary file not shown.

STM32F4DSP_HAL_IAP/方案描述文件/IAP状态图.drawio

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.
40.1 KB
Loading

STM32F4DSP_HAL_IAP/方案描述文件/IAP状态图.svg

Lines changed: 1 addition & 1 deletion
Loading

STM32F4DSP_HAL_freeRTOS_Framework/CONFIG/PeriphConfig.c

Lines changed: 175 additions & 96 deletions
Original file line numberDiff line numberDiff line change
@@ -254,43 +254,87 @@ void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
254254
/*_________________________________________以下外设的声明代码均放在了PeriphConfigCore.h的最下面_________________________________________________________*/
255255
#if SYSTEM_CAN1_ENABLE
256256

257-
CAN_HandleTypeDef CAN1_Handler;
257+
CAN_HandleTypeDef CAN1_Handler;
258+
259+
//CAN初始化,默认启用CAN1和FIFO0
260+
//tsjw:重新同步跳跃时间单元.范围:CAN_SJW_1tq~ CAN_SJW_4tq
261+
//tbs2:时间段2的时间单元. 范围:CAN_BS2_1tq~CAN_BS2_8tq;
262+
//tbs1:时间段1的时间单元. 范围:CAN_BS1_1tq ~CAN_BS1_16tq
263+
//brp :波特率分频器.范围:1~1024; tq=(brp)*tpclk1
264+
//波特率=Fpclk1/((tbs1+1+tbs2+1+1)*brp);
265+
//mode:CAN_Mode_Normal,普通模式;CAN_Mode_LoopBack,回环模式;
266+
//Fpclk1的时钟在初始化的时候设置为42M
267+
//以下两个例子
268+
// CAN1_Mode_Init(CAN_SJW_1TQ,CAN_BS1_6TQ,CAN_BS2_7TQ,6,CAN_MODE_NORMAL); //42M外设,500Kbps波特率
269+
// CAN1_Mode_Init(CAN_SJW_1TQ,CAN_BS1_7TQ,CAN_BS2_8TQ,21,CAN_MODE_NORMAL); //42M外设,125Kbps波特率
270+
void CAN1_Mode_Init(uint32_t tsjw, uint32_t tbs1, uint32_t tbs2, uint32_t brp, uint32_t mode)
271+
{
272+
CAN_FilterTypeDef CAN_FilterInit_Handler;
273+
274+
CAN1_Handler.Instance = CAN1;
275+
CAN1_Handler.Init.Prescaler = brp; //分频系数,写几就是分频几倍,分频自APB1 42MHZ
276+
CAN1_Handler.Init.Mode = mode; //模式设置
258277

259-
void sys_CAN1_Init(void)
260-
{
278+
CAN1_Handler.Init.SyncJumpWidth = tsjw; //重新同步跳跃宽度(Tsjw)为tsjw+1个时间单位 CAN_SJW_1TQ ~ CAN_SJW_4TQ
279+
CAN1_Handler.Init.TimeSeg1 = tbs1; //CAN_BS1_1TQ ~ CAN_BS1_16TQ
280+
CAN1_Handler.Init.TimeSeg2 = tbs2; //CAN_BS2_1TQ ~ CAN_BS2_8TQ
261281

262-
CAN1_Handler.Instance = CAN1;
263-
CAN1_Handler.Init.Prescaler = 6; //1~1024,分频自APB1 42MHZ
264-
CAN1_Handler.Init.Mode = CAN_MODE_NORMAL; //无需动
265-
266-
//在CAN外设频率为42Mhz时,推荐分频系数(brp+1)为6,三段分别为:1tq\7tq\6tq,CAN1工作在 500Kbps
267-
CAN1_Handler.Init.SyncJumpWidth = CAN_SJW_1TQ; //CAN_SJW_1TQ ~ CAN_SJW_4TQ
268-
CAN1_Handler.Init.TimeSeg1 = CAN_BS1_7TQ; //CAN_BS1_1TQ ~ CAN_BS1_16TQ
269-
CAN1_Handler.Init.TimeSeg2 = CAN_BS2_6TQ; //CAN_BS2_1TQ ~ CAN_BS2_8TQ
270-
271-
CAN1_Handler.Init.TimeTriggeredMode = DISABLE; //非时间触发通信模式
272-
CAN1_Handler.Init.AutoBusOff = DISABLE; //软件自动离线管理
273-
CAN1_Handler.Init.AutoWakeUp = DISABLE; //睡眠模式通过软件唤醒
274-
CAN1_Handler.Init.AutoRetransmission = ENABLE; //报文自动传送,不用动
282+
CAN1_Handler.Init.TimeTriggeredMode = DISABLE; //非时间触发通信模式 0=时间触发通讯不使用,保持默认
283+
CAN1_Handler.Init.AutoBusOff = DISABLE; //软件自动离线管理 0=总线断开状态根据软件请求,保持默认
284+
CAN1_Handler.Init.AutoWakeUp = DISABLE; //睡眠模式通过软件唤醒(清除CAN->MCR的SLEEP位),保持默认
285+
CAN1_Handler.Init.AutoRetransmission = ENABLE; //报文自动传送,不用动
275286
//ENABLE:CAN hardware will automatically retransmit the message until it has been successfully transmitted according to the CAN standard.
276-
CAN1_Handler.Init.ReceiveFifoLocked = DISABLE; //报文不锁定,新的覆盖旧的
277-
CAN1_Handler.Init.TransmitFifoPriority = DISABLE;//优先级由报文标识符决定
287+
CAN1_Handler.Init.ReceiveFifoLocked = DISABLE; //报文不锁定,新的覆盖旧的
288+
CAN1_Handler.Init.TransmitFifoPriority = DISABLE; //优先级由报文标识符决定
278289

279290
HAL_CAN_Init(&CAN1_Handler);
280-
281-
}
291+
292+
CAN_FilterInit_Handler.FilterBank = 0; //过滤器0
293+
/*For single CAN instance(14 dedicated filter banks),
294+
this parameter must be a number between Min_Data = 0 and Max_Data = 13.
295+
For dual CAN instances(28 filter banks shared),
296+
this parameter must be a number between Min_Data = 0 and Max_Data = 27.*/
297+
CAN_FilterInit_Handler.FilterMode = CAN_FILTERMODE_IDMASK; //屏蔽位模式
298+
CAN_FilterInit_Handler.FilterScale = CAN_FILTERSCALE_32BIT;
299+
CAN_FilterInit_Handler.FilterIdHigh = 0x0000;
300+
CAN_FilterInit_Handler.FilterIdLow = 0x0000;
301+
CAN_FilterInit_Handler.FilterMaskIdHigh = 0x0000; //32位MASK (都是0表示不关心特定的接收ID,来者都收或者由接收函数再设定)
302+
CAN_FilterInit_Handler.FilterMaskIdLow = 0x0000;
303+
CAN_FilterInit_Handler.FilterFIFOAssignment = CAN_FILTER_FIFO0; //过滤器0关联到FIFO0
304+
CAN_FilterInit_Handler.FilterActivation = CAN_FILTER_ENABLE; //激活过滤器0
305+
306+
HAL_CAN_ConfigFilter(&CAN1_Handler, &CAN_FilterInit_Handler); //滤波器初始化
307+
308+
#if CAN1_RX0_INT_ENABLE
309+
//FIFO 0 message pending Interrupt
310+
HAL_CAN_ActivateNotification(&CAN1_Handler, CAN_IT_RX_FIFO0_MSG_PENDING);
311+
//CAN1 RX0 Interrupt
312+
HAL_NVIC_SetPriority(CAN1_RX0_IRQn, 2, 0);
313+
HAL_NVIC_EnableIRQ(CAN1_RX0_IRQn);
314+
#endif
315+
316+
#if CAN1_TX_INT_ENABLE
317+
//Transmit mailbox empty Interrupt
318+
HAL_CAN_ActivateNotification(&CAN1_Handler, CAN_IT_TX_MAILBOX_EMPTY);
319+
//CAN1 TX Interrupt
320+
HAL_NVIC_SetPriority(CAN1_TX_IRQn, 2, 0);
321+
HAL_NVIC_EnableIRQ(CAN1_TX_IRQn);
322+
#endif
323+
324+
//启动CAN1
325+
HAL_CAN_Start(&CAN1_Handler);
282326

283-
void CAN_Config(void);
327+
}
284328

285329
void HAL_CAN_MspInit(CAN_HandleTypeDef* canHandle)
286330
{
287331

288332
GPIO_InitTypeDef GPIO_InitStruct = {0};
289-
if(canHandle->Instance==CAN1)
333+
if(canHandle->Instance == CAN1)
290334
{
291335
/* CAN1 clock enable */
292336
__HAL_RCC_CAN1_CLK_ENABLE();
293-
337+
294338
__HAL_RCC_GPIOB_CLK_ENABLE();
295339
/**CAN1 GPIO Configuration
296340
PB8 ------> CAN1_RX
@@ -309,16 +353,6 @@ void HAL_CAN_MspInit(CAN_HandleTypeDef* canHandle)
309353
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
310354
GPIO_InitStruct.Alternate = GPIO_AF9_CAN1;
311355
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
312-
313-
#if CAN1_RX0_INT_ENABLE
314-
/* CAN1 interrupt Init */
315-
HAL_NVIC_SetPriority(CAN1_RX0_IRQn, 2, 0); //默认使用FIFO0,所以启用FIFO0接收中断
316-
HAL_NVIC_EnableIRQ(CAN1_RX0_IRQn);
317-
// HAL_NVIC_SetPriority(CAN1_RX1_IRQn, 2, 0); //默认不启用FIFO1接收中断
318-
// HAL_NVIC_EnableIRQ(CAN1_RX1_IRQn);
319-
#endif
320-
321-
CAN_Config();
322356
}
323357
}
324358

@@ -333,7 +367,7 @@ void HAL_CAN_MspInit(CAN_HandleTypeDef* canHandle)
333367
HAL_CAN_IRQHandler(&CAN1_Handler);
334368
}
335369

336-
//Receive FIFO 0 message pending interrupt
370+
//Receive FIFO 0 message pending interrupt callback
337371
void HAL_CAN_RxFifo0MsgPendingCallback(CAN_HandleTypeDef *hcan)
338372
{
339373
if(hcan == (&CAN1_Handler))
@@ -342,97 +376,138 @@ void HAL_CAN_MspInit(CAN_HandleTypeDef* canHandle)
342376
HAL_CAN_GetRxMessage(&CAN1_Handler, CAN_RX_FIFO0, &CAN1_IT_RxMessage, CAN1_IT_Rxdata);
343377
}
344378
}
345-
346-
347379
#endif
348380

349381
//void CAN1_RX1_IRQHandler(void)
350382
//{
351383
// HAL_CAN_IRQHandler(&CAN1_Handler);
352384
//}
385+
353386

354-
void CAN_Config(void)
355-
{
356-
CAN_FilterTypeDef sFilterConfig;
357-
358-
/*配置CAN过滤器*/
359-
sFilterConfig.FilterBank = 0; //过滤器0
360-
sFilterConfig.FilterMode = CAN_FILTERMODE_IDMASK; //屏蔽位模式
361-
sFilterConfig.FilterScale = CAN_FILTERSCALE_32BIT;
362-
sFilterConfig.FilterIdHigh = 0x0000; //32位ID
363-
sFilterConfig.FilterIdLow = 0x0000;
364-
sFilterConfig.FilterMaskIdHigh = 0x0000; //32位MASK,都是0表示不关心特定的接收ID
365-
sFilterConfig.FilterMaskIdLow = 0x0000;
366-
sFilterConfig.FilterFIFOAssignment = CAN_RX_FIFO0;//过滤器0关联到FIFO0
367-
sFilterConfig.FilterActivation = ENABLE; //激活滤波器0
368-
sFilterConfig.SlaveStartFilterBank = 14;
369-
370-
//过滤器配置
371-
HAL_CAN_ConfigFilter(&CAN1_Handler, &sFilterConfig);
372-
373-
//启动CAN外围设备
374-
HAL_CAN_Start(&CAN1_Handler);
387+
#if CAN1_TX_INT_ENABLE
388+
CAN_TxHeaderTypeDef CAN1_IT_TxMessage; //CAN1从中断发送数据的结构体
389+
u8 CAN1_IT_TxMessage_flag; //CAN1发送完毕标志位
390+
u8 CAN1_IT_TxMessage_data[8]; //CAN1发送中断的8位数据
391+
u32 CAN1_IT_TxMessage_id; //CAN1发送中断的id
392+
393+
//Transmit mailbox empty Interrupt
394+
void CAN1_TX_IRQHandler(void)
395+
{
396+
HAL_CAN_IRQHandler(&CAN1_Handler);
397+
}
398+
399+
//Transmission Mailbox 0 complete callback
400+
void HAL_CAN_TxMailbox0CompleteCallback(CAN_HandleTypeDef *hcan)
401+
{
402+
if(hcan == (&CAN1_Handler))
403+
{
404+
CAN1_IT_TxMessage_flag = 1;
405+
//关闭发送中断,等待下一次用户填好数据手动开启
406+
HAL_CAN_DeactivateNotification(&CAN1_Handler,CAN_IT_TX_MAILBOX_EMPTY);
407+
}
408+
}
409+
410+
//Transmission Mailbox 1 complete callback
411+
void HAL_CAN_TxMailbox1CompleteCallback(CAN_HandleTypeDef *hcan)
412+
{
413+
if(hcan == (&CAN1_Handler))
414+
{
415+
CAN1_IT_TxMessage_flag = 1;
416+
//关闭发送中断,等待下一次用户填好数据手动开启
417+
HAL_CAN_DeactivateNotification(&CAN1_Handler,CAN_IT_TX_MAILBOX_EMPTY);
418+
}
419+
}
420+
421+
//Transmission Mailbox 2 complete callback
422+
void HAL_CAN_TxMailbox2CompleteCallback(CAN_HandleTypeDef *hcan)
423+
{
424+
if(hcan == (&CAN1_Handler))
425+
{
426+
CAN1_IT_TxMessage_flag = 1;
427+
//关闭发送中断,等待下一次用户填好数据手动开启
428+
HAL_CAN_DeactivateNotification(&CAN1_Handler,CAN_IT_TX_MAILBOX_EMPTY);
429+
}
430+
}
431+
432+
#endif
375433

376-
#if CAN1_RX0_INT_ENABLE
377-
//激活RX通知,即使能中断
378-
HAL_CAN_ActivateNotification(&CAN1_Handler, CAN_IT_RX_FIFO0_MSG_PENDING);
379-
#endif
380-
}
381434

382435
//设置期望接收特定的类型帧和ID的信息
383436
//care:0表示任何ID都接收,1表示只接受与FilterId一致的ID的消息
437+
//FilterNumber:要设置的滤波器编号,It ranges from 0 to 13
384438
//frameType:期望接收帧的类型,0为标准帧(ID为11位),1为扩展帧(ID为29位)
385-
//FilterId:期望接收的ID
439+
//ExceptId:期望接收的ID
386440
//默认消息类型为数据帧
387-
void CAN1_setExceptId(u8 care,u8 frameType,u32 FilterId)
441+
void CAN1_setExceptId(u8 care,u8 FilterNumber,u8 frameType,u32 ExceptId)
388442
{
389443
CAN_FilterTypeDef sFilterConfig; //配置过滤器
390444
if(care == 0)
391445
{
392-
sFilterConfig.FilterBank = 0; //过滤器0
393-
sFilterConfig.FilterMode = CAN_FILTERMODE_IDMASK; //屏蔽位模式
446+
sFilterConfig.FilterBank = FilterNumber; //过滤器编号
447+
sFilterConfig.FilterMode = CAN_FILTERMODE_IDMASK; //屏蔽位模式
394448
sFilterConfig.FilterScale = CAN_FILTERSCALE_32BIT;
395-
sFilterConfig.FilterIdHigh = 0x0000; //32位ID
449+
sFilterConfig.FilterIdHigh = 0x0000; //32位ID
396450
sFilterConfig.FilterIdLow = 0x0000;
397-
sFilterConfig.FilterMaskIdHigh = 0x0000; //32位MASK,都是0表示不关心特定的接收ID
451+
sFilterConfig.FilterMaskIdHigh = 0x0000; //32位MASK,都是0表示不关心特定的接收ID
398452
sFilterConfig.FilterMaskIdLow = 0x0000;
399-
sFilterConfig.FilterFIFOAssignment = CAN_RX_FIFO0;//过滤器0关联到FIFO0
400-
sFilterConfig.FilterActivation = ENABLE; //激活滤波器0
401-
sFilterConfig.SlaveStartFilterBank = 14;
453+
sFilterConfig.FilterFIFOAssignment = CAN_FILTER_FIFO0; //过滤器0关联到FIFO0
454+
sFilterConfig.FilterActivation = CAN_FILTER_ENABLE; //激活滤波器0
402455
HAL_CAN_ConfigFilter(&CAN1_Handler, &sFilterConfig);
456+
403457
}else
404458
{
405459
if(frameType == CAN_ID_STD) //只接受标准数据帧
406460
{
407-
sFilterConfig.FilterBank=0;
461+
sFilterConfig.FilterBank=FilterNumber;
408462
sFilterConfig.FilterMode=CAN_FILTERMODE_IDMASK;
409463
sFilterConfig.FilterScale=CAN_FILTERSCALE_32BIT;
410-
sFilterConfig.FilterIdHigh = ((FilterId << 21) & 0xffff0000) >> 16;
411-
sFilterConfig.FilterIdLow = ((FilterId << 21) | CAN_ID_STD | CAN_RTR_DATA) & 0xffff;
464+
sFilterConfig.FilterIdHigh = ((ExceptId << 21) & 0xffff0000) >> 16;
465+
sFilterConfig.FilterIdLow = ((ExceptId << 21) | CAN_ID_STD | CAN_RTR_DATA) & 0xffff;
412466
sFilterConfig.FilterMaskIdHigh = 0xFFFF;
413467
sFilterConfig.FilterMaskIdLow = 0xFFFF;
414-
sFilterConfig.FilterFIFOAssignment=CAN_RX_FIFO0;
415-
sFilterConfig.FilterActivation=ENABLE;
468+
sFilterConfig.FilterFIFOAssignment=CAN_FILTER_FIFO0;
469+
sFilterConfig.FilterActivation=CAN_FILTER_ENABLE;
416470
HAL_CAN_ConfigFilter(&CAN1_Handler, &sFilterConfig);
417471
}else //只接受扩展数据帧
418472
{
419-
sFilterConfig.FilterBank=0;
473+
sFilterConfig.FilterBank=FilterNumber;
420474
sFilterConfig.FilterMode=CAN_FILTERMODE_IDMASK;
421475
sFilterConfig.FilterScale=CAN_FILTERSCALE_32BIT;
422-
sFilterConfig.FilterIdHigh = ((FilterId << 3) & 0xffff0000) >> 16;
423-
sFilterConfig.FilterIdLow = ((FilterId << 3) | CAN_ID_EXT | CAN_RTR_DATA) & 0xffff;
476+
sFilterConfig.FilterIdHigh = ((ExceptId << 3) & 0xffff0000) >> 16;
477+
sFilterConfig.FilterIdLow = ((ExceptId << 3) | CAN_ID_EXT | CAN_RTR_DATA) & 0xffff;
424478
sFilterConfig.FilterMaskIdHigh = 0xFFFF;
425479
sFilterConfig.FilterMaskIdLow = 0xFFFF;
426-
sFilterConfig.FilterFIFOAssignment=CAN_RX_FIFO0;
427-
sFilterConfig.FilterActivation=ENABLE;
480+
sFilterConfig.FilterFIFOAssignment=CAN_FILTER_FIFO0;
481+
sFilterConfig.FilterActivation=CAN_FILTER_ENABLE;
428482
HAL_CAN_ConfigFilter(&CAN1_Handler, &sFilterConfig);
429483
}
430-
431484
}
432485
}
433486

487+
/*
488+
给 *TxMessage设置内容,不发送
489+
返回:0正确,其他错误
490+
*/
491+
u8 CAN1_Set_Msg(CAN_TxHeaderTypeDef* TxMessage,u8 len,u8 frameType,u32 id)
492+
{
493+
if((len <= 0) || (len > 8) || (TxMessage == NULL))return 1;
494+
495+
if(frameType == CAN_ID_STD)
496+
{
497+
TxMessage->IDE=CAN_ID_STD; // 使用标准标识符
498+
TxMessage->StdId = id; // 设置标准标识符 (11位)
499+
}else{
500+
TxMessage->IDE=CAN_ID_EXT; // 使用扩展标识符
501+
TxMessage->ExtId = id; // 设置扩展标示符 (29位)
502+
}
503+
504+
TxMessage->RTR=CAN_RTR_DATA; // 消息类型为数据帧 (数据帧或者遥控帧:CAN_RTR_Data 或者 CAN_RTR_Remote)
505+
TxMessage->DLC=len; // 发送几字节信息 (小于等于8)
506+
507+
return 0;
508+
}
434509

435-
//can发送一组数据
510+
//无中断模式,can发送一组数据
436511
//msg:数据指针,最大为8个字节
437512
//len:数据长度(最大为8)
438513
//frameType:帧类型,0为标准帧(ID为11位),1为扩展帧(ID为29位)
@@ -447,7 +522,7 @@ u8 CAN1_Send_Msg(u8* msg,u8 len,u8 frameType,u32 id)
447522
CAN_TxHeaderTypeDef TxHeader; //发送数据结构体
448523
u32 TxMailbox;
449524

450-
if((msg == NULL) || (len == 0) || (len > 8)) return HAL_ERROR;
525+
if((msg == NULL) || (len <= 0) || (len > 8)) return HAL_ERROR;
451526

452527
if(frameType == CAN_ID_STD)
453528
{
@@ -470,44 +545,48 @@ u8 CAN1_Send_Msg(u8* msg,u8 len,u8 frameType,u32 id)
470545
return HAL_ERROR;
471546
}
472547
i = 0;
473-
while((HAL_CAN_GetTxMailboxesFreeLevel(&CAN1_Handler) != 3)&&(i < 0xffff)) {i++;}
548+
549+
//Check if a transmission request is pending on the selected Tx Mailboxes
550+
while( ( HAL_CAN_IsTxMessagePending(&CAN1_Handler, TxMailbox) ) && ( i < 0xfff ) ) {i++;}
551+
if(i >= 0xfff) return HAL_TIMEOUT;
474552
return HAL_OK;
475553
}
476554

477-
//can口接收数据查询,不使用中断方式时的使用
478-
//buf:数据缓存区,最大为8个字节
479-
//len:数据长度(最大为8)
555+
//无中断模式,can口接收数据查询
556+
//buf:数据缓存区;
557+
//len数据长度(字节数,8以内)
480558
//frameType:帧类型,0为标准帧(ID为11位),1为扩展帧(ID为29位)
481559
//id:ID标识符,若frameType为0,则为标准标识符,若frameType为其他则为扩展标识符
482560
//返回值:0,有数据被收到;
483-
// 其他,没有接收到数据;
484-
u8 CAN1_Receive_Msg(u8* buf,u8* len,u8* frameType,u32* id)
561+
// 其他,无数据接收到;
562+
u8 CAN1_Receive_Msg(u8* buf,u8* len, u8* frameType,u32* id)
485563
{
486564
CAN_RxHeaderTypeDef RxHeader;
487565
u8 i;
488-
u8 RxData[8];
566+
u8 RxData[8];
489567

568+
//Return Number of messages available in Rx FIFO
490569
if(HAL_CAN_GetRxFifoFillLevel(&CAN1_Handler, CAN_RX_FIFO0) == 0) //没有接收到数据,直接退出
491570
{
492571
return HAL_ERROR;
493572
}
494-
573+
495574
if(HAL_CAN_GetRxMessage(&CAN1_Handler, CAN_RX_FIFO0, &RxHeader, RxData) != HAL_OK)
496575
{
497576
return HAL_ERROR;
498577
}
499578

500-
for(i=0;i<RxHeader.DLC;i++)
501-
buf[i]=RxData[i];
502-
503579
*len = RxHeader.DLC;
504580

581+
for(i = 0;i < RxHeader.DLC; i++)
582+
buf[i] = RxData[i];
583+
505584
if(RxHeader.IDE == CAN_ID_STD)
506585
{
507586
*frameType = CAN_ID_STD;
508587
*id = RxHeader.StdId;
509588
}else{
510-
*frameType = 1;
589+
*frameType = CAN_ID_EXT;
511590
*id = RxHeader.ExtId;
512591
}
513592

0 commit comments

Comments
 (0)