| CAN_InitType  CAN_InitStructure; CAN_FilterInitType          CAN_FilterInitStructure = {0};
 
 CAN_InitStructure.CAN_TTC = DISABLE;
 CAN_InitStructure.CAN_ABO = ENABLE;
 CAN_InitStructure.CAN_AWU = ENABLE;
 CAN_InitStructure.CAN_NART = DISABLE;
 CAN_InitStructure.CAN_RFL = DISABLE;
 CAN_InitStructure.CAN_TFP = DISABLE;
 CAN_InitStructure.CAN_Mode = CAN_Mode_Normal;
 CAN_InitStructure.CAN_SJW = CAN_SJW_1tq;
 
 switch (bulv)
 {
 case 1000:
 {
 CAN_InitStructure.CAN_BS1 = CAN_BS1_8tq;
 CAN_InitStructure.CAN_BS2 = CAN_BS2_3tq;
 CAN_InitStructure.CAN_Prescaler = 10;
 }
 break;
 case 800:
 {
 CAN_InitStructure.CAN_BS1 = CAN_BS1_10tq;
 CAN_InitStructure.CAN_BS2 = CAN_BS2_2tq;
 CAN_InitStructure.CAN_Prescaler = 10;
 }
 break;
 case 500:
 {
 CAN_InitStructure.CAN_BS1 = CAN_BS1_2tq;
 CAN_InitStructure.CAN_BS2 = CAN_BS2_1tq;
 CAN_InitStructure.CAN_Prescaler = 60;
 }
 break;
 case 250:
 {
 CAN_InitStructure.CAN_BS1 = CAN_BS1_8tq;
 CAN_InitStructure.CAN_BS2 = CAN_BS2_3tq;
 CAN_InitStructure.CAN_Prescaler = 40;
 }
 break;
 case 100:
 {
 CAN_InitStructure.CAN_BS1 = CAN_BS1_14tq;
 CAN_InitStructure.CAN_BS2 = CAN_BS2_5tq;
 CAN_InitStructure.CAN_Prescaler = 60;
 }
 break;
 case 50:
 {
 CAN_InitStructure.CAN_BS1 = CAN_BS1_14tq;
 CAN_InitStructure.CAN_BS2 = CAN_BS2_5tq;
 CAN_InitStructure.CAN_Prescaler = 120;
 }
 break;
 case 20:
 {
 CAN_InitStructure.CAN_BS1 = CAN_BS1_14tq;
 CAN_InitStructure.CAN_BS2 = CAN_BS2_5tq;
 CAN_InitStructure.CAN_Prescaler = 300;
 }
 break;
 default:
 {
 CAN_InitStructure.CAN_BS1 = CAN_BS1_8tq;
 CAN_InitStructure.CAN_BS2 = CAN_BS2_3tq;
 CAN_InitStructure.CAN_Prescaler =10;
 }
 break;
 }
 
 CAN_Init(CAN2, &CAN_InitStructure);       ///<SYSCLK=240M,  APB1CLK=120M, CAN Baudrate=(240/2)*1000K)/((1+9)*(3+7+2)) = 1000K
 
 CAN_FilterInitStructure.CAN_FilterNumber=0;
 CAN_FilterInitStructure.CAN_FilterMode=CAN_FilterMode_IdMask;
 CAN_FilterInitStructure.CAN_FilterScale=CAN_FilterScale_32bit;
 CAN_FilterInitStructure.CAN_FilterIdHigh=0x0;
 CAN_FilterInitStructure.CAN_FilterIdLow=0x0;
 CAN_FilterInitStructure.CAN_FilterMskIdHigh=0x0;
 CAN_FilterInitStructure.CAN_FilterMskIdLow=0x0;
 CAN_FilterInitStructure.CAN_FilterFIFOAssignment=CAN_FIFO0;
 CAN_FilterInitStructure.CAN_FilterActivation=ENABLE;
 CAN_FilterInit(CAN2, &CAN_FilterInitStructure);
 
 CAN_INTConfig(CAN2,CAN_INT_RFP0,ENABLE);
 CAN配置
 |