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

This commit is contained in:
TuxMonkey
2026-03-09 18:28:45 +08:00
parent a96e9e939c
commit e3f5951881
7 changed files with 68 additions and 16 deletions

View File

@@ -78,7 +78,7 @@ 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);
@@ -87,9 +87,14 @@ static void CANAddFilter(FDCANInstance *_instance)
// 3. 重新启动 FDCAN
HAL_FDCAN_Start(_instance->can_handle);
// ====================================================
HAL_FDCAN_ConfigFilter(_instance->can_handle, &fdcan_filter_conf);
// 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;

View File

@@ -21,7 +21,7 @@ static XidiPowerMeter_Init_Config_s xidi_pm_config = {
.can_config = {
.can_handle = &hfdcan1, // 原来直接传的句柄,现在放进结构体里
.rx_id = 0x213, // 接收 ID
.tx_id = 0x001, // 发送 ID (不发送填0)
.tx_id = 0x000, // 发送 ID (不发送填0)
},
.daemon_config = {
.reload_count = 5, // 守护进程超时周期 (例如5次没收到算离线)