Chinaunix首页 | 论坛 | 博客
  • 博客访问: 420946
  • 博文数量: 55
  • 博客积分: 167
  • 博客等级: 入伍新兵
  • 技术积分: 1167
  • 用 户 组: 普通用户
  • 注册时间: 2012-08-28 10:20
个人简介

一个算是正常的中国码农!

文章分类

全部博文(55)

文章存档

2014年(1)

2013年(31)

2012年(23)

我的朋友

分类:

2012-08-29 07:41:49

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为禁止自动重传模式。

阅读(1255) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:关于dephi中iocomp的用法

给主人留下些什么吧!~~