微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > STM32 CAN通信 滤波器配置总结

STM32 CAN通信 滤波器配置总结

时间:11-17 来源:互联网 点击:

其中我们可以开启can错误中断,设置响应的标志位,在大循环里面不断的检测是否错误,一旦错误就重新配置can,这样有效地保证了CAN的正常通信。具体操作代码如下:

/*CAN错误中断服务函数*/、

void CAN1_SCE_IRQHandler(void)
{
CANWorkFlag &= ~CAN_RESET_COMPLETE;
}

/*CAN错误处理函数*/

/************************************************************************
*函数名称: CanErrorProcess
*功能: CAN故障,错误处理
*参数说明: 无
************************************************************************/
void CanErrorProcess(void)
{
if ((CANWorkFlag & CAN_RESET_COMPLETE) == 0)
{
CAN1_Configuration();
//CAN2_Configuration();
CANWorkFlag |= CAN_RESET_COMPLETE;
}

//if((CANWorkFlag & CAN2_RESET_COMPLETE) == 0)
//{
//CAN1_Configuration();
//CAN2_Configuration();
//CANWorkFlag |= CAN2_RESET_COMPLETE;
//}
}

/*错误标志的定义*/

extern uint8 CANWorkFlag;
/************************************************************************
* CANWorkFlag 标志位掩码定义
************************************************************************/
#define CAN_INIT_COMPLETE 0x80 //CAN初始化完成标志
//#define CAN_BUS_ERROR 0x40 //CAN总线错误标志
#define CAN_RESET_COMPLETE 0x40 //CAN控制器复位完成标志

#define CAN2_INIT_COMPLETE 0x20 //CAN2初始化完成标志
//#define CAN_BUS_ERROR 0x40 //CAN总线错误标志
#define CAN2_RESET_COMPLETE 0x10 //CAN2控制器复位完成标志

以上是我再调试时候添加的,挺有效的;

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top