STM32中CAN报文自动重传在标准库与HAL库中的差异

文章目录

  • 前言
  • 一、can重传在标准库中的配置
  • 二、can重传在HAL库中的配置
  • 总结

  • 前言

    对于stm32的can配置中报文自动重传的开启和关闭,标准库和HAL库的配置针对开启和关闭是相反的,因此要注意是否配置的值是自己需要的。

    一、can重传在标准库中的配置

    can配置代码:

    	can.CAN_NART = DISABLE;	//报文自动重传配置
    
    	FunctionalState CAN_NART;  /*!< Enable or disable the no-automatic 
                                      retransmission mode. This parameter can be 
                                      set either to ENABLE or DISABLE. */
    
        /* Set the no automatic retransmission */
        if (CAN_InitStruct->CAN_NART == ENABLE)
        {
          CANx->MCR |= CAN_MCR_NART;
        }
        else
        {
          CANx->MCR &= ~(uint32_t)CAN_MCR_NART;
        }
    

    DISABLE代表的是开启自动重传,ENABLE代表的是关闭自动重传。

    二、can重传在HAL库中的配置

    can配置代码:

    	hcan.Init.AutoRetransmission = ENABLE;
    
    	FunctionalState AutoRetransmission;  /*!< Enable or disable the non-automatic retransmission mode.
                                                This parameter can be set to ENABLE or DISABLE. */
    
    
    	/* Set the automatic retransmission */
    	if (hcan->Init.AutoRetransmission == ENABLE)
    	{
    	  CLEAR_BIT(hcan->Instance->MCR, CAN_MCR_NART);
    	}
    	else
    	{
    	  SET_BIT(hcan->Instance->MCR, CAN_MCR_NART);
    	}
    

    DISABLE代表的是关闭自动重传,ENABLE代表的是开启自动重传。

    总结

    通过最终的寄存器配置可以发现,针对can报文重传,其实标准库中应该叫做是否开启禁用自动报文重传,而HAL库则就是是否开启自动报文重传,在can的配置中标准库和HAL库中针对ENABLE和DISABLE的定义貌似HAL库更加合理些。

    作者:i0o0o0o

    物联沃分享整理
    物联沃-IOTWORD物联网 » STM32中CAN报文自动重传在标准库与HAL库中的差异

    发表回复