[技术问答] 使用的NUC131单片机CAN发送和接收不能同时使用?

[复制链接]
1302|11
 楼主| 希望啊 发表于 2017-9-30 10:16 | 显示全部楼层 |阅读模式
可以单独发送和接收,当二者同时工作时单片机接收不到CAN数据,查找的原因是发送和接收都会使程序进入CAN0_IRQHandler()中断,程序将不会识别接收数据的中断,请我怎么避免这种情况?
21mengnan 发表于 2017-9-30 20:15 | 显示全部楼层
官方的例子也竟然没有同时进行的。。。好奇怪啊,
捉虫天师 发表于 2017-9-30 20:36 | 显示全部楼层
如果是公用一个中断源,应该进去后可以通过某种方式判断类型。
捉虫天师 发表于 2017-9-30 20:36 | 显示全部楼层
查一下,是不是发送和接收有不通的中断标志位。
捉虫天师 发表于 2017-9-30 20:38 | 显示全部楼层
查一下,是不是发送和接收有不通的中断标志位。
有这种情况,比如不通 的复位,就会产生不通的标志位。
wahahaheihei 发表于 2017-10-1 13:57 | 显示全部楼层
  /**************************/
        /* Status Change interrupt*/
        /**************************/
        if(CAN0->STATUS & CAN_STATUS_RXOK_Msk)
        {
            CAN0->STATUS &= ~CAN_STATUS_RXOK_Msk;   /* Clear RxOK status*/
        }

        if(CAN0->STATUS & CAN_STATUS_TXOK_Msk)
        {
            CAN0->STATUS &= ~CAN_STATUS_TXOK_Msk;    /* Clear TxOK status*/
        }
wahahaheihei 发表于 2017-10-1 13:58 | 显示全部楼层
看到了吗,通过这两句确定是发送的还是接受的。。官方的例子写一起了
wahahaheihei 发表于 2017-10-1 13:59 | 显示全部楼层
所以你可以用的时候注意点,官方的例子没错,但是没有说明白咋回事,你如果看不懂就以为一样呢,就糊涂了
598330983 发表于 2017-10-1 21:06 来自手机 | 显示全部楼层
里面不是有识别的寄存器标志吗?
598330983 发表于 2017-10-1 21:07 来自手机 | 显示全部楼层
例子确实是每个程序都重复了,不过正常的就是这样,确实要考虑两种行为
wahahaheihei 发表于 2017-10-2 22:22 来自手机 | 显示全部楼层
进去后判断寄存器标志位也不行吗?
heisexingqisi 发表于 2017-10-3 10:14 | 显示全部楼层
应该跟GPIO中断是一回事,需要进去后判断。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

4

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部