Stm32 固件库中关于NART的误解

1140阅读 0评论2014-02-24 枫海8深蓝
分类:C/C++

Stm32 固件库中关于NART的误解

禁止自动重传模式NART

该模式主要用于满足CAN标准中,时间触发通信选项的需求。通过对CAN_MCR寄存器的NART位置1,来让硬件工作在该模式。 

在该模式下,发送操作只会执行一次。如果发送操作失败了,不管是由于仲裁丢失或出错,硬件都不会再自动发送该报文。 

网上有很多can的程序在注释的时候有这样的错误:

将 CAN_InitStructure.CAN_NART=DISABLE理解成为失能自动重传

但是NART的英文全称应该是no automatic retransmission,也就是没有自动重传。

那么CAN_InitStructure.CAN_NART=DISABLE的意思就是使能自动重传。(双重否定等于肯定)

另外对照stm32的数据手册和固件库的相关代码可以发现这一点:

    /* Set the no automatic retransmission */

    if (CAN_InitStruct->CAN_NART == ENABLE)

    {

      CAN->MCR |= MCR_NART;

    }

    else

    {

      CAN->MCR &= ~MCR_NART;

}

根据上面代码和文字,可以看出CAN->MCR |= MCR_NART为禁止自动重传模式。

上一篇:stm32时钟分析
下一篇:stm32——ucos的中断使用