2024年3月13日发(作者:兴秀艳)
关于 STM32 中 CAN1_RX0_IRQn 和 CAN1_RX1_IRQn
的使用
如果你用的 CAN 引脚是 PA11 和 PA12,接收中断用
CAN1_RX0_IRQn。如果 CAN 引脚用的是 PB8 和 PB9,也就是用重定义的引
脚,接收中断用 CAN1_RX1_IRQn。由于 PA11 和 PA12 也是 USB 的引脚,所
以非互联型且带 CAN 控制器的微控制器的库文件在起名字时用了
USB_LP_CAN1_RX0_IRQn。 以上内容参考于网络,后经证实,以上说法是不
正确的,理由如下:
STM32 有 2 个 3 级深度的接收缓冲区:FIFO0 和 FIFO1,每个 FIFO 都可以
存放 3 个完整的报文,它们完全由硬件来管理。如果是来自 FIFO0 的接收中断,
则用 CAN1_RX0_IRQn 中断来处理。如果是来自 FIFO1 的接收中断,则用
CAN1_RX1_IRQn 中断来处理。在 CAN 的初始化配置过程中,用
CAN_FilterFIFOAssignment 来选择要使用 FIFO。
示例如下:
1. 配置过滤器 CAN__FilterNumber = 0;
CAN__FilterMode = CAN_FilterMode_IdMask;
CAN__FilterScale = CAN_FilterScale_32bit;
CAN__FilterIdHigh = 0x0000;
CAN__FilterIdLow = 0x0000;
CAN__FilterMaskIdHigh
0x0000;CAN__FilterMaskIdLow = 0x0000;
CAN__FilterFIFOAssignment = 0; //关联 FIFO0
CAN__FilterActivation = ENABLE;
=
2024年3月13日发(作者:兴秀艳)
关于 STM32 中 CAN1_RX0_IRQn 和 CAN1_RX1_IRQn
的使用
如果你用的 CAN 引脚是 PA11 和 PA12,接收中断用
CAN1_RX0_IRQn。如果 CAN 引脚用的是 PB8 和 PB9,也就是用重定义的引
脚,接收中断用 CAN1_RX1_IRQn。由于 PA11 和 PA12 也是 USB 的引脚,所
以非互联型且带 CAN 控制器的微控制器的库文件在起名字时用了
USB_LP_CAN1_RX0_IRQn。 以上内容参考于网络,后经证实,以上说法是不
正确的,理由如下:
STM32 有 2 个 3 级深度的接收缓冲区:FIFO0 和 FIFO1,每个 FIFO 都可以
存放 3 个完整的报文,它们完全由硬件来管理。如果是来自 FIFO0 的接收中断,
则用 CAN1_RX0_IRQn 中断来处理。如果是来自 FIFO1 的接收中断,则用
CAN1_RX1_IRQn 中断来处理。在 CAN 的初始化配置过程中,用
CAN_FilterFIFOAssignment 来选择要使用 FIFO。
示例如下:
1. 配置过滤器 CAN__FilterNumber = 0;
CAN__FilterMode = CAN_FilterMode_IdMask;
CAN__FilterScale = CAN_FilterScale_32bit;
CAN__FilterIdHigh = 0x0000;
CAN__FilterIdLow = 0x0000;
CAN__FilterMaskIdHigh
0x0000;CAN__FilterMaskIdLow = 0x0000;
CAN__FilterFIFOAssignment = 0; //关联 FIFO0
CAN__FilterActivation = ENABLE;
=