sja1000 中断_SJA1000中断接收为什么接收中断不能被触发,不能进入中断接收子函数?看资料,里面说会自动触发中断的。...

1.sja1000的int引脚你先不连接   sja1000通电后 (纯粹通电不运行程序) 你测试一下int 是否为高? 如果是高正常。

2.sja1000的int引脚你先不连接   运行程序    你测试一下int 是否为低? 如果是低正常,说明你的单片机设置有问题。是否允许外部中断0了呢?

中断寄存器为0x01时中断引脚才会输出低电平呢。你现在要做的事是想法让中断寄存器为0x01

3.还有你是自接收模式 ?还是什么  ?你先设置自接收模式(退出复位模式时的指令为0X0C),看看单个节点是否工作正常     -----------------建议先看看第三条。一般自接收模式通过了就没问题了,你要先看自接收模式能够正常工作。先面是我的程序,不建议仔细看,看看复位和发送做哪些操作就行。(自接收测试模式)

void SJA1000_Init(void)

{

GPIO_Set(Control_PORT,RST,0);     //   IO口复位

//Delay_ms(10);                    //       .

GPIO_Set(Control_PORT,RST,1);     //       .

//Delay_ms(10);                    //       .

CAN_write(0x00,0x09);   sja1000进入复位模式  单滤波器设置

CAN_write(0x1f,0xc8);               ///PeliCAN 模式,时钟频率2分频...

CAN_write(0x10,0x01);               //验收代码寄存器

CAN_write(0x11,0x02);               //验收代码寄存器

CAN_write(0x12,0x03);               //验收代码寄存器

CAN_write(0x13,0x08);               //验收代码寄存器3

CAN_write(0x14,0x00);               ///验收屏蔽寄存器0

CAN_write(0x15,0x00);               ///验收屏蔽寄存器

CAN_write(0x16,0x00);               ///验收屏蔽寄存器

CAN_write(0x17,0x00);               ///验收屏蔽寄存器

CAN_write(0x08,0x1a);               //设置输出管脚

CAN_write(0x06,0x49);               //总线定时器0波特率预设值

CAN_write(0x00,0x0C);               //退出复位模式

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值