打印
[技术问答]

使用的NUC131单片机CAN发送和接收不能同时使用?

[复制链接]
962|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 | 只看该作者
查一下,是不是发送和接收有不通的中断标志位。

使用特权

评论回复
5
捉虫天师| | 2017-9-30 20:38 | 只看该作者
查一下,是不是发送和接收有不通的中断标志位。
有这种情况,比如不通 的复位,就会产生不通的标志位。

使用特权

评论回复
6
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*/
        }

使用特权

评论回复
7
wahahaheihei| | 2017-10-1 13:58 | 只看该作者
看到了吗,通过这两句确定是发送的还是接受的。。官方的例子写一起了

使用特权

评论回复
8
wahahaheihei| | 2017-10-1 13:59 | 只看该作者
所以你可以用的时候注意点,官方的例子没错,但是没有说明白咋回事,你如果看不懂就以为一样呢,就糊涂了

使用特权

评论回复
9
598330983| | 2017-10-1 21:06 | 只看该作者
里面不是有识别的寄存器标志吗?

使用特权

评论回复
10
598330983| | 2017-10-1 21:07 | 只看该作者
例子确实是每个程序都重复了,不过正常的就是这样,确实要考虑两种行为

使用特权

评论回复
11
wahahaheihei| | 2017-10-2 22:22 | 只看该作者
进去后判断寄存器标志位也不行吗?

使用特权

评论回复
12
heisexingqisi| | 2017-10-3 10:14 | 只看该作者
应该跟GPIO中断是一回事,需要进去后判断。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

4

帖子

0

粉丝