STM32 CAN通信 滤波器配置总结
其中我们可以开启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控制器复位完成标志
以上是我再调试时候添加的,挺有效的;
STM32CAN通信滤波 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)