STM32 F1 - 如何使用CAN中断配置CAN过滤器?

时间:2017-02-21 11:37:33

标签: c stm32 can-bus

我可以从main.c文件配置CAN过滤器,但我也希望通过从另一个节点发送帧来配置它们。我想用来配置过滤器的中断代码:

    HAL_GPIO_TogglePin(LD2_GPIO_Port, LD2_Pin);
    sFilterConfig.FilterMode = CAN_FILTERMODE_IDLIST;
    sFilterConfig.FilterScale = CAN_FILTERSCALE_32BIT;
    sFilterConfig.BankNumber = hcan.pRxMsg->Data[1];
    sFilterConfig.FilterNumber = hcan.pRxMsg->Data[2];
    sFilterConfig.FilterIdHigh  = (hcan.pRxMsg->Data[3])<<5;
    sFilterConfig.FilterIdLow = 0;
    sFilterConfig.FilterMaskIdHigh = 0;
    sFilterConfig.FilterMaskIdLow = 0;
    sFilterConfig.FilterFIFOAssignment = 0;
    sFilterConfig.FilterActivation = ENABLE;
    HAL_CAN_ConfigFilter(&hcan, &sFilterConfig);

例如,我发送数据[1] = 1,数据[2] = 0。 当我发送帧时,LED会改变它的状态,所以它应该工作。我在main.c文件中使用了类似的代码来配置STM编程时的过滤器,它可以正常工作。在STM工作时,甚至可以配置CAN过滤器吗?如果是,那么我错在哪里?

0 个答案:

没有答案