基于HAL库的CAN通信二:通信调试(基于STM32CUBE FW_F1 V1.8.5)

基于HAL库的CAN通信二:通信调试

注意: 部分STM32芯片有2路CAN控制器,使用CAN2时也需要打开CAN时钟。

如何使用CAN进行收发数据:
根据cubemx本地官方例程总结此版本(FW_F1 V1.8.5)CAN使用流程如下:

Created with Raphaël 2.3.0 开始 初始化过滤器 初始化发送结构体 启动接收中断 编写接收回调函数 结束

依次分析每段代码:

//初始化过滤器
{
  CAN_FilterTypeDef  sFilterConfig;

  /* Configure the CAN Filter */
  sFilterConfig.FilterBank = 0;
  sFilterConfig.FilterMode = CAN_FILTERMODE_IDMASK;
  sFilterConfig.FilterScale = CAN_FILTERSCALE_32BIT;
  sFilterConfig.FilterIdHigh = 0x0000;
  sFilterConfig.FilterIdLow = 0x0000;
  sFilterConfig.FilterMaskIdHigh = 0x0000;
  sFilterConfig.FilterMaskIdLow = 0x0000;
  sFilterConfig.FilterFIFOAssignment = CAN_RX_FIFO0;
  sFilterConfig.FilterActivation = ENABLE;
  sFilterConfig.SlaveStartFilterBank = 14;

  if (HAL_CAN_ConfigFilter(&hcan, &sFilterConfig) != HAL_OK)
  {
    /* Filter configuration Error */
    Error_Handler();
  }

  /* Start the CAN peripheral */
  if (HAL_CAN_Start(&hcan) != HAL_OK)
  {
    /* Start Error */
    Error_Handler();
  }
}
//启动接收中断
  if (HAL_CAN_ActivateNotification(&hcan, CAN_IT_RX_FIFO0_MSG_PENDING) != HAL_OK)
  {
    /* Notification Error */
    Error_Handler();
  }
//初始化发送结构体
  TxHeader.StdId = 0x321;
  TxHeader.ExtId = 0x01;
  TxHeader.RTR = CAN_RTR_DATA;
  TxHeader.IDE = CAN_ID_STD;
  TxHeader.DLC = 2;
  TxHeader.TransmitGlobalTime = DISABLE;
//接收回调函数
void HAL_CAN_RxFifo0MsgPendingCallback(CAN_HandleTypeDef *CanHandle)
{
  /* Get RX message */
  if (HAL_CAN_GetRxMessage(CanHandle, CAN_RX_FIFO0, &RxHeader, RxData) != HAL_OK)
  {
    /* Reception Error */
    Error_Handler();
  }

  if ((RxHeader.StdId == 0x321) && (RxHeader.IDE == CAN_ID_STD) && (RxHeader.DLC == 2))
  {
    ubKeyNumber = RxData[0];
  }
}
//主函数添加代码
  CAN_Config();

  /* Infinite loop */
  while (1)
  {
      if (ubKeyNumber == 0x4)
      {
        ubKeyNumber = 0x00;
      }
      else
      {
        ++ubKeyNumber;  
        /* Set the data to be transmitted */
        TxData[0] = ubKeyNumber;
        TxData[1] = 0xAD;
        
        /* Start the Transmission process */
        if (HAL_CAN_AddTxMessage(&CanHandle, &TxHeader, TxData, &TxMailbox) != HAL_OK)
        {
          /* Transmission request Error */
          Error_Handler();
        }
        HAL_Delay(1000);
      }
  }

实验一:与上位机通信测试

单片机CAN接口通过USB转CAN模块连接至电脑,使用上位机配置can模块,如何进行通信。
在这里插入图片描述
我的程序:
链接:https://pan.baidu.com/s/1wNPGgfEfQg78RA_wrdg_oQ?pwd=0j6u
提取码:0j6u
在这里插入图片描述
单片机循环发送01-0B,发送05后,接着05发送数据。

这里我用的上位机是模块提供的,这是优信电子提供的下载链接:
https://www.yourcee.com/filedownload/533248

实验二:双机通信

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: STM32Cube是一个STM32 MCU软件生态系统,提供了一整套开发工具、软件库和现成的代码示例,帮助开发者轻松快速地构建各种STM32 MCU应用。而fw_f1 v1.8.0是STM32Cube中针对F1系列MCU的Firmware包,包含了针对该系列MCU的所有软件库和功能模块。 fw_f1 v1.8.0在之前的版本基础上进行了优化和增强,主要新增或改进了以下内容: 1.支持最新的MDK和IAR编译器版本,提供了更好的开发体验。 2.增加了新的F1系列MCU型号的支持,包括STM32F103VB、STM32F103ZD等。 3.优化了CAN、USB和SDIO等外设的驱动,提高了稳定性和兼容性。 4.增加了对UART和SPI DMA操作的支持,加快了数据传输速度。 5.新增了一些功能模块,例如CRC(循环冗余校验)校验模块,可以加快校验速度和减轻CPU负担。 总之,fw_f1 v1.8.0是一个更全面、更稳定、更易用的STM32 F1系列MCU软件包,为开发者打造更高效的MCU应用提供了更好的支持。 ### 回答2: STM32Cube是ST公司推出的一种基于ARM处理器的软件开发框架,其中的fw_f1 v1.8.0版本则是专门针对STM32F1系列处理器的固件库。FW_F1库包含了许多针对STM32F1系列芯片的驱动程序,以及许多应用层的例程,能够帮助开发者快速构建符合需求的应用程序。 fw_f1 v1.8.0版本相较于之前的版本,除了一些已知的Bug修复,还加入了新功能。首先,增加了对LL库(Low-Layer Driver,底层驱动)的支持,大幅降低了系统的延迟和功耗,提高了代码的效率;其次,增加了USB Host库的支持,支持USB MSC(Mass Storage Class,大容量存储设备)协议并支持通过USB OTG(On-The-Go)接口连接其他USB设备,比如支持 Android手机作为USB主机使用STM32F1;最后,增加了支持CAN通信的例程,支持CAN标准帧和扩展帧的发送和接收,极大地方便了用户开发CAN通信应用程序。 总的来说,STM32Cube fw_f1 v1.8.0版本对STM32F1系列芯片的应用开发提供了更加完善的解决方案,使得开发者可以更加便捷地进行嵌入式应用的开发和调试。 ### 回答3: STM32Cube FW_F1是适用于STM32F1系列微控制器的软件包,其中包括了多个软件组件,比如HAL层(硬件抽象层)、LL层(低级驱动层)、USB协议栈、文件系统库、操作系统等。这些组件能够极大地简化开发者的开发过程,提升开发效率,同时也提供了对全系列的支持,包括LQFP、LFBGA、WLCSP等多种封装形式。 在STM32Cube FW_F1 v1.8.0中,主要新增了以下几个特性: 1. 增加了对新的STM32F103C6Tx、STM32F100Dx、STM32F100R8x型号的支持; 2. 优化了USB接收和发送数据的性能; 3. 修复了部分bug,提高了软件的稳定性和可靠性; 4. 更新了HAL库,增加了支持新型号的驱动程序; 5. 加强了支持IAR和Keil两种开发环境。 此外,STM32Cube FW_F1 v1.8.0还提供了多个例程,如基于HAL库和LL库的GPIO、UART、CAN、USB、SPI等功能的实现示例,开发者可以根据自己的需要,选择相应的例程进行参考。同时,还提供了详细的使用说明文档和API参考手册,使得开发者能够更加方便和快速地进行开发。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值