修复了吗?没有,很难的啦111

This commit is contained in:
TuxMonkey
2026-03-09 21:43:44 +08:00
parent e3f5951881
commit 0ccdd0a0d5
5 changed files with 73 additions and 74 deletions

View File

@@ -78,24 +78,26 @@ static void CANAddFilter(FDCANInstance *_instance)
fdcan_filter_conf.IsCalibrationMsg = 0;
//fdcan_filter_conf.RxBufferIndex=0;
// ================== 【核心修复区】 ==================@todo有问题 我要验牌
// 1. 强制让 FDCAN 进入 INIT 模式,否则无法写入 Message RAM
HAL_FDCAN_Stop(_instance->can_handle);
// // ================== 【核心修复区】 ==================@todo有问题 我要验牌
// // 1. 强制让 FDCAN 进入 INIT 模式,否则无法写入 Message RAM
// HAL_FDCAN_Stop(_instance->can_handle);
//
// // 2. 写入过滤器配置
// HAL_FDCAN_ConfigFilter(_instance->can_handle, &fdcan_filter_conf);
//
// // 3. 重新启动 FDCAN
// HAL_FDCAN_Start(_instance->can_handle);
//
// // 4. 【救命稻草】HAL_FDCAN_Stop 关闭了所有中断,必须在这里重新激活!
// uint32_t FDCAN_RXActiveITs = FDCAN_IT_RX_FIFO0_NEW_MESSAGE | FDCAN_IT_RX_FIFO0_FULL |
// FDCAN_IT_RX_FIFO0_WATERMARK | FDCAN_IT_RX_FIFO0_MESSAGE_LOST |
// FDCAN_IT_RX_FIFO1_NEW_MESSAGE | FDCAN_IT_RX_FIFO1_FULL |
// FDCAN_IT_RX_FIFO1_WATERMARK | FDCAN_IT_RX_FIFO1_MESSAGE_LOST;
// HAL_FDCAN_ActivateNotification(_instance->can_handle, FDCAN_RXActiveITs, 0);
// // ====================================================
// 2. 写入过滤器配置
HAL_FDCAN_ConfigFilter(_instance->can_handle, &fdcan_filter_conf);
// 3. 重新启动 FDCAN
HAL_FDCAN_Start(_instance->can_handle);
// 4. 【救命稻草】HAL_FDCAN_Stop 关闭了所有中断,必须在这里重新激活!
uint32_t FDCAN_RXActiveITs = FDCAN_IT_RX_FIFO0_NEW_MESSAGE | FDCAN_IT_RX_FIFO0_FULL |
FDCAN_IT_RX_FIFO0_WATERMARK | FDCAN_IT_RX_FIFO0_MESSAGE_LOST |
FDCAN_IT_RX_FIFO1_NEW_MESSAGE | FDCAN_IT_RX_FIFO1_FULL |
FDCAN_IT_RX_FIFO1_WATERMARK | FDCAN_IT_RX_FIFO1_MESSAGE_LOST;
HAL_FDCAN_ActivateNotification(_instance->can_handle, FDCAN_RXActiveITs, 0);
// ====================================================
#else
CAN_FilterTypeDef can_filter_conf;
static uint8_t can1_filter_idx = 0, can2_filter_idx = 14; // 0-13给can1用,14-27给can2用