CAN2的初始化参照上一篇博文就OK了。
需要修改的地方:
//配置过滤器
CAN_FilterInitStructure.CAN_FilterNumber=14;
那为什么要修改额???
查datasheet:
双 CAN
CAN1:主 bxCAN,用于管理 bxCAN 与 512 字节 SRAM 存储器之间的通信。
CAN2:从 bxCAN,无法直接访问 SRAM 存储器。
两个 bxCAN 单元共享 512 字节 SRAM 存储器
一个有28个,如图所示
在库函数版本中可以找到:
typedef struct
{
。。。。。。。。。。。。。。。
uint8_t CAN_FilterNumber;
。。。。。。。。。。。。。。。
} CAN_FilterInitTypeDef;//此结构体在stm32f4xx_can.h
void CAN_FilterInit(CAN_FilterInitTypeDef* CAN_FilterInitStruct)
{
。。。。。。。。。。。。。
一些对CAN筛选器寄存器的初始化
筛选器组通过相应的 CAN_FMR 寄存器进行配置。为了配置筛选器组,必须通过将 CAN_FAR 寄存器的 FACT 位清零而将其停用。筛选器尺度通过 CAN_FS1R 寄存器的相应 FSCx 位进 行配置。相应掩码/标识符 寄存器的标识符列表或标识符掩码模式通过 CAN_FMR 寄存器的 FBMx 位进行配置。
。。。。。。。。。。。。。
}//此函数在stm32f4xx_can.c