summaryrefslogtreecommitdiff
path: root/bsp
diff options
context:
space:
mode:
authorAubr.Cool <[email protected]>2016-12-26 14:21:13 +0800
committerAubr.Cool <[email protected]>2016-12-26 14:26:47 +0800
commitcd679a251eb3dd833ed90d75518bec218169167c (patch)
treec0ab6cadb80dec484eba6e39696e7ae0b5294353 /bsp
parent22f4c0e5c9e5390ddbeb7bf76c6eef993605b190 (diff)
[BSP] stm32f10x bxcan correct ext frame filter
Diffstat (limited to 'bsp')
-rw-r--r--bsp/stm32f10x/drivers/bxcan.c18
1 files changed, 14 insertions, 4 deletions
diff --git a/bsp/stm32f10x/drivers/bxcan.c b/bsp/stm32f10x/drivers/bxcan.c
index 77d18c6fd0..70ee941c52 100644
--- a/bsp/stm32f10x/drivers/bxcan.c
+++ b/bsp/stm32f10x/drivers/bxcan.c
@@ -1008,10 +1008,20 @@ static rt_err_t bxmodifyfilter(struct stm_bxcan *pbxcan, struct rt_can_filter_it
}
break;
}
- CAN_FilterInitStructure.CAN_FilterIdHigh = ((ID[1]) & 0x0000FFFF);
- CAN_FilterInitStructure.CAN_FilterIdLow = ID[0] & 0x0000FFFF;
- CAN_FilterInitStructure.CAN_FilterMaskIdHigh = (ID[1] & 0xFFFF0000) >> 16;
- CAN_FilterInitStructure.CAN_FilterMaskIdLow = (ID[0] & 0xFFFF0000) >> 16;
+ if(pitem->ide)
+ {
+ CAN_FilterInitStructure.CAN_FilterIdHigh = (ID[0] & 0xFFFF0000) >> 16;
+ CAN_FilterInitStructure.CAN_FilterIdLow = ID[0] & 0x0000FFFF;
+ CAN_FilterInitStructure.CAN_FilterMaskIdHigh = (ID[1] & 0xFFFF0000) >> 16;
+ CAN_FilterInitStructure.CAN_FilterMaskIdLow = ((ID[1]) & 0x0000FFFF);
+ }
+ else
+ {
+ CAN_FilterInitStructure.CAN_FilterIdHigh = ((ID[1]) & 0x0000FFFF);
+ CAN_FilterInitStructure.CAN_FilterIdLow = ID[0] & 0x0000FFFF;
+ CAN_FilterInitStructure.CAN_FilterMaskIdHigh = (ID[1] & 0xFFFF0000) >> 16;
+ CAN_FilterInitStructure.CAN_FilterMaskIdLow = (ID[0] & 0xFFFF0000) >> 16;
+ }
if (fbase >= pbxcan->fifo1filteroff)
{
CAN_FilterInitStructure.CAN_FilterFIFOAssignment = 1;