(4)配置筛选器的工作方式; (5)编写测试程序,收发报文并校验。 2.代码分析CAN硬件相关宏定义我们把CAN硬件相关的配置都以宏的形式定义到“bsp_can.h”文件中,见代码清单42-4。代码清单42-4 CAN硬件配置相关的宏(bsp_can.h文件) 1 #define CANx CAN1 2 #define CAN_CLK RCC_APB1Periph_CAN1 3 #define CAN_RX_IRQ USB_LP_CAN1_RX0_IRQn 4 #define CAN_RX_IRQHandler USB_LP_CAN1_RX0_IRQHandler 5 6 #define CAN_RX_PIN GPIO_Pin_8 7 #define CAN_TX_PIN GPIO_Pin_9 8 #define CAN_TX_GPIO_PORT GPIOB 9 #define CAN_RX_GPIO_PORT GPIOB 10 #define CAN_TX_GPIO_CLK (RCC_APB2Periph_AFIO|RCC_APB2Periph_GPIOB) 11 #define CAN_RX_GPIO_CLK RCC_APB2Periph_GPIOB以上代码根据硬件连接,把与CAN通讯使用的CAN号、引脚号以及时钟都以宏封装起来,并且定义了接收中断的中断向量和中断服务函数,我们通过中断来获知接收FIFO的信息。注意在GPIO时钟部分我们还加入了AFIO时钟,这是为下面CAN进行复用功能重映射而设置的,当使用复用功能重映射时,必须开启AFIO时钟。初始化CAN的GPIO利用上面的宏,编写CAN的初始化函数,见代码清单25-3。代码清单42-5 CAN的GPIO初始化函数(bsp_can.c文件) 1 / 2 函数名:CAN_GPIO_Config 3 描述:CAN的GPIO配置4 输入:无5 输出:无6 调用:内部调用7 */ 8 static void CAN_GPIO_Config(void) 9 {