您好,有这个函数,我忘记放上来了,给您看一下完整的有关CAN设置的函数内容:
static void CanInitConfig(void)
{
stc_can_init_config_t stcCanInitCfg;
stc_can_filter_t astcFilters[CAN_FILTERS_COUNT] = \
{
{0x00000000ul, 0x1FFFFFFFul, CanFilterSel1, CanAllFrames}
};
//<< Enable can peripheral clock and buffer(ram)
PWC_RamOpMdConfig(HighSpeedMd);
PWC_RamPwrdownCmd(PWC_RAMPWRDOWN_CAN, Enable);
PWC_Fcg1PeriphClockCmd(PWC_FCG1_PERIPH_CAN, Enable);
//<< CAN GPIO config
PORT_SetFunc(PortB, Pin02, Func_Can1_Rx, Disable);
PORT_SetFunc(PortB, Pin10, Func_Can1_Tx, Disable);
//PORT_ResetBits(PortD, Pin15);
//PORT_OE(PortD, Pin15, Enable);
MEM_ZERO_STRUCT(stcCanInitCfg);
//<< Can bit time config
stcCanInitCfg.stcCanBt.PRESC = 1u-1u;
stcCanInitCfg.stcCanBt.SEG_1 = 13u-2u;
stcCanInitCfg.stcCanBt.SEG_2 = 7u-1u;
stcCanInitCfg.stcCanBt.SJW = 3u-1u;
stcCanInitCfg.stcWarningLimit.CanErrorWarningLimitVal = 10u;
stcCanInitCfg.stcWarningLimit.CanWarningLimitVal = 16u-1u;
stcCanInitCfg.enCanRxBufAll = CanRxAll;
stcCanInitCfg.enCanRxBufMode = CanRxBufNotStored;
stcCanInitCfg.enCanSAck = CanSelfAckEnable;
stcCanInitCfg.enCanSTBMode = CanSTBFifoMode;
stcCanInitCfg.pstcFilter = astcFilters;
stcCanInitCfg.u8FilterCount = CAN_FILTERS_COUNT;
CAN_Init(&stcCanInitCfg);
//<< Loop back internal
CAN_ModeConfig(CanExternalLoopBackMode, Enable);
}
|