[STM32F4] 最新CUBEMX的HAL的CAN总线配置接受发送(STM32F412)

[复制链接]
elsaflower 发表于 2023-4-9 16:30 | 显示全部楼层
如何使用can烧写代码               
janewood 发表于 2023-4-9 16:40 | 显示全部楼层
STM32 的 HAL 库好用吗  
usysm 发表于 2023-4-9 16:54 | 显示全部楼层
STM32CubeMX5.3只能用最新的库吗?
gygp 发表于 2023-4-9 17:00 | 显示全部楼层
嵌入式新手学寄存器还是库函数?              
51xlf 发表于 2023-4-9 17:06 | 显示全部楼层
使用图形向导生成C初始化代码  
lzmm 发表于 2023-4-9 17:17 | 显示全部楼层
STM32CubeMX,是一个图形化的软件配置工具  
Undshing 发表于 2023-4-11 21:54 | 显示全部楼层
can总线一直是比较难的
liliang9554 发表于 2023-7-3 23:13 | 显示全部楼层
代码量庞大。效率不高。
午夜粪车 发表于 2023-7-3 23:15 | 显示全部楼层
最讨厌的了,经常是一个寄存器搞很长名字,一堆结构体。
zhaoxqi 发表于 2023-7-3 23:16 | 显示全部楼层
can的回环测试可以就行了
gongche 发表于 2023-7-3 23:19 | 显示全部楼层
搞定CAN,好多工作都轻松。
huwr 发表于 2023-7-3 23:22 | 显示全部楼层
can总线最少要有2个节点才能正常工作
huanghuac 发表于 2023-7-3 23:23 | 显示全部楼层
HAL_StatusTypeDef HAL_CAN_AddTxMessage(CAN_HandleTypeDef *hcan, CAN_TxHeaderTypeDef *pHeader, uint8_t aData[], uint32_t *pTxMailbox);

查看接口源码:
      /* Store the Tx mailbox */
      *pTxMailbox = 1U << transmitmailbox;

所以入参的pTxMailbox需要自行定义变量,将地址传入,
HAL_CAN_AddTxMessage(&hcan1,&TxMessage1,TR_BUF,(uint32_t*)CAN_TX_MAILBOX0)的最后一个入参,可能导致错误
happy_10 发表于 2023-7-3 23:24 | 显示全部楼层
的确会导致错误。
wenfen 发表于 2023-7-3 23:25 | 显示全部楼层
这个资料 貌似很到位!
bqyj 发表于 2023-7-3 23:27 | 显示全部楼层
我配置后可以发送数据,但是无法进入接收中断,HAL_Status = HAL_CAN_ActivateNotification(&hcan1,   CAN_IT_RX_FIFO0_MSG_PENDING);返回值是HAL_OK,我用HAL库1.6版本可收可发
zhuhuis 发表于 2023-7-3 23:28 | 显示全部楼层
我最近也在使用最新的CAN库,可是会出现HardFaul()里,是由于HAL_CAN_AddTxMeddage()中的
      /* Set up the Id */
      if (pHeader->IDE == CAN_ID_STD)
      {
        hcan->Instance->sTxMailBox[transmitmailbox].TIR = ((pHeader->StdId << CAN_TI0R_STID_Pos) |
                                                           pHeader->RTR);
      }
      else
      {
        hcan->Instance->sTxMailBox[transmitmailbox].TIR = ((pHeader->ExtId << CAN_TI0R_EXID_Pos) |
                                                           pHeader->IDE |
                                                           pHeader->RTR);
      }
产生的,但是不明白是为什么
tian111 发表于 2023-7-3 23:29 | 显示全部楼层
出现HardFault的问题解决了吗?
songqian17 发表于 2023-7-3 23:30 | 显示全部楼层
也是卡死在这里了,只要一发送就卡死在这里,不知是何故,也是按照楼主那样的做的发送! void CAN_TRANSMIT(void)
{                                                
        uint8_t TR_BUF[8]={0x11,0x22,0x33,0x44,0x55,0x66,0x77,0x88};

  TxMessage1.DLC=8;                                        //消息的数据长度
  TxMessage1.StdId=0x114;                        //标准标识符
  TxMessage1.ExtId=0x00001314;                //扩展标识符
  TxMessage1.IDE=CAN_ID_STD;                        //CAN_ID_STD使用标准标识符;CAN_ID_EXT 使用扩展标
  TxMessage1.RTR=CAN_RTR_DATA;                //为数据帧

        if(HAL_CAN_AddTxMessage(&hcan,&TxMessage1,TR_BUF,(uint32_t*)CAN_TX_MAILBOX0)!=HAL_OK)
        {
        }
}
发送里经过 if (pHeader->IDE == CAN_ID_STD)
这个卡死在在这里
void HardFault_Handler(void)
{
    while (1)
    {
    }
}
chenho 发表于 2023-7-3 23:32 | 显示全部楼层
看楼主用起来很easy的样子。

而我用2个STM32F103C8T6的开发板对发,安装买家的例程可以
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部