这是CAN的配置
//<<CAN 波特率配置
stcCanInitCfg.stcCanBt.PRESC = 200-1;
stcCanInitCfg.stcCanBt.SEG_1 = 9-2;
stcCanInitCfg.stcCanBt.SEG_2 = 7-1;
stcCanInitCfg.stcCanBt.SJW = 7-1;
// stcCanInitCfg.stcCanBt.PRESC = 100-1;
// stcCanInitCfg.stcCanBt.SEG_1 = 7-2;
// stcCanInitCfg.stcCanBt.SEG_2 = 5-1;
// stcCanInitCfg.stcCanBt.SJW = 5-1;
stcCanInitCfg.stcWarningLimit.CanErrorWarningLimitVal = 10;
stcCanInitCfg.stcWarningLimit.CanWarningLimitVal = 16-1;
stcCanInitCfg.enCanRxBufAll = CanRxNormal;
//stcCanInitCfg.enCanRxBufMode = CanRxBufNotStored;
stcCanInitCfg.enCanRxBufMode = CanRxBufOverwritten;
stcCanInitCfg.enCanSTBMode = CanSTBFifoMode;
CAN_Init(&stcCanInitCfg);
//<<CAN 滤波器配置
stcFilter.enAcfFormat = CanStdFrames;
stcFilter.enFilterSel = CanFilterSel1;
uint8_t addr = flash_arr[DEVICE_NUMBER_INDEX];
stcFilter.u32CODE = addr;//ID CODE 寄存器用于比较接收到 CAN ID
stcFilter.u32MASK = 0xE000000;//ID MASK 寄存器用于选择比较的 CAN ID 位。对应的 ID MASK 位为 1 时,不比较该位的 ID CODE。
CAN_FilterConfig(&stcFilter, TRUE);
//<<Can Irq Enable
CAN_IrqCmd(CanRxIrqEn, TRUE);
CAN_IrqCmd(CanBusErrorIrqEn, TRUE);
EnableNvic(CAN_IRQn, IrqLevel0, TRUE);
|