STM32CubeMX的CAN使用

大家好。

刚装了cube,第一次接触cube,学习CAN,无从下手,大家提点建议和方法。can芯片是SN65HVD235DR,cube版本和芯片资料是

image.pngimage.png

生成的代码如下:

初始化函数

void MX_CAN_Init(void)

{


  hcan.Instance = CAN;

  hcan.Init.Prescaler = 4;

  hcan.Init.Mode = CAN_MODE_NORMAL;

  hcan.Init.SJW = CAN_SJW_1TQ;

  hcan.Init.BS1 = CAN_BS1_6TQ;

  hcan.Init.BS2 = CAN_BS2_1TQ;

  hcan.Init.TTCM = DISABLE;

  hcan.Init.ABOM = DISABLE;

  hcan.Init.AWUM = DISABLE;

  hcan.Init.NART = DISABLE;

  hcan.Init.RFLM = DISABLE;

  hcan.Init.TXFP = DISABLE;

  if (HAL_CAN_Init(&hcan) != HAL_OK)

  {

    _Error_Handler(__FILE__, __LINE__);

  }

}

image.png

image.png

image.png

请问,can发送和接收数据在哪里开始?怎么实现的?不胜感激。

已邀请:

zhangyada

赞同来自:

找回调函数和细看can.h 里面的结构体

往事随风1995

赞同来自:

那个cube里面有例程的,研究一下官方例程

any012

赞同来自:

我是这样用的:

接收用中断方式,HAL_CAN_Receive_IT();然后在中断接收回调函数里处理数据,最后再次调用中断接收函数。

发送用HAL_CAN_Transmit()就行。

注意,需要先声明两个变量,

CanRxMsgTypeDef RxMessage;

CanTxMsgTypeDef TxMessage;

并将hcan的对应两个指针指向这两个变量。

hcan.pRxMsg = &RxMessage;

    hcan.pTxMsg = &TxMessage;


去远方 - 90后

赞同来自:

还有很多没设置,滤波器/接收/发送。。。

qq278397935

赞同来自:

我手里也有个F429 的  阿波罗  正点原子的,,,can通讯没搞。。。

要回复问题请先登录注册