野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 15188|回复: 3

stm32 can很奇怪的现象!

[复制链接]
发表于 2015-4-22 16:08:34 | 显示全部楼层 |阅读模式
正在实验CAN ,通过电脑把数据发送给实验板CAN在液晶上显示出来,电脑是用的是USB-CAN 转换器。现在实验现象很奇怪,如果把CAN_FilterInitStructure.CAN_FilterMaskIdHigh= 0xFFFF; CAN_FilterInitStructure.CAN_FilterMaskIdLow= 0xFFFF; 设置成全F,实验板就接收不到数据,进不了中断.如果设置成全0通讯就正常。
用的是火大的例程。


void USB_LP_CAN1_RX0_IRQHandler(void)
{
CAN_Receive(CAN1, CAN_FIFO0, &RxMessage);
if((RxMessage.ExtId==0x1314) && (RxMessage.IDE==CAN_ID_EXT)&& (RxMessage.DLC==2) && ((RxMessage.Data[1]|RxMessage.Data[0]<<8)==0xDCBA))
        {
                a=RxMessage.Data[0];
                a<<=8;
                a|=RxMessage.Data[1];
                LED3_ON();
        Delay_10ms(2000);  
                LED3_OFF();
        Delay_10ms(2000);
        }
CAN_ClearITPendingBit(CAN1,CAN_IT_FMP0);

}

谁知道是什么原因吗?
回复

使用道具 举报

发表于 2015-4-22 18:07:06 | 显示全部楼层
这个是滤波器设置啊,根据滤波器设置,stm32会过滤报文的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-4-23 11:10:45 | 显示全部楼层
flyleaf 发表于 2015-4-22 18:07
这个是滤波器设置啊,根据滤波器设置,stm32会过滤报文的

我的过滤器就是设置的0x1314啊
static void CAN_Filter_Config(void)
{
    CAN_FilterInitTypeDef  CAN_FilterInitStructure;
    CAN_FilterInitStructure.CAN_FilterNumber=0;        //过滤器组0
    CAN_FilterInitStructure.CAN_FilterMode=CAN_FilterMode_IdMask;        //工作在标识符屏蔽位模式
    CAN_FilterInitStructure.CAN_FilterScale=CAN_FilterScale_32bit;        //过滤器位宽为单个32位。
    CAN_FilterInitStructure.CAN_FilterIdHigh=(((u32)0x1314<<3)&0xFFFF0000)>>16;        //0x0000;// 要过滤的ID高位
    CAN_FilterInitStructure.CAN_FilterIdLow=(((u32)0x1314<<3)|CAN_ID_EXT|CAN_RTR_DATA)&0xFFFF; //0x0000; //要过滤的ID低位
    CAN_FilterInitStructure.CAN_FilterMaskIdHigh=0x0000;        //0x0000;// 过滤器高16位每位必须匹配
    CAN_FilterInitStructure.CAN_FilterMaskIdLow=0x0000;        //0x0000;// 过滤器低16位每位必须匹配
    CAN_FilterInitStructure.CAN_FilterFIFOAssignment=CAN_Filter_FIFO0 ;        //过滤器被关联到FIFO0
    CAN_FilterInitStructure.CAN_FilterActivation=ENABLE;        //使能过滤器
    CAN_FilterInit(&CAN_FilterInitStructure);
    CAN_ITConfig(CAN1, CAN_IT_FMP0, ENABLE);
}

回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-4-23 11:22:58 | 显示全部楼层
修改了一下调试工具上的发送ID就好了,原来我直接用的是1314,修改为00001314就能接收到了,给和我一样的新手提个醒!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-9-21 17:47 , Processed in 0.039774 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表