新手上路
- 积分
- 39
- 金钱
- 39
- 注册时间
- 2014-3-31
- 在线时间
- 2 小时
|
5金钱
//过滤器初始化
CAN->FMR|=1<<0; //过滤器组工作在初始化模式
CAN->FA1R&=~(1<<0); //过滤器0不激活
CAN->FS1R|=1<<0; //过滤器位宽为32位.
CAN->FM1R&=~(1<<0); //过滤器0工作在标识符屏蔽位模式
CAN->FFA1R|=0<<0; //过滤器0关联到FIFO0
CAN->sFilterRegister[0].FR1=0X00000000;//32位ID !!!!????这里过滤器ID全0
CAN->sFilterRegister[0].FR2=0X00000000;//32位MASK !!!!????这里屏蔽位模式全不屏蔽,都接收
//CAN->sFilterRegister[0].FR2=0XFFE00000;//32位MASK
CAN->FA1R|=1<<0; //激活过滤器0
CAN->FMR&=0<<0; //过滤器组进入正常模式
//can发送一组数据(固定格式:ID为0X12,标准帧,数据帧)
//len:数据长度(最大为8)
//msg:数据指针,最大为8个字节.
//返回值:0,成功;
// 其他,失败;
u8 Can_Send_Msg(u8* msg,u8 len)
{
u8 mbox;
u16 i=0;
mbox=Can_Tx_Msg(0X12,0,0,len,msg); !!!!???? 这里ID为什么固定为12,不做形参?关键是上面没有屏蔽所有,这里更改ID就接收不了了
while((Can_Tx_Staus(mbox)!=0X07)&&(i<0XFFF))i++;//等待发送结束
if(i>=0XFFF)return 1; //发送失败?
return 0; //发送成功;
}
|
|