一、硬件连接(STM32F407)

PA11接CAN_RX  PA12接CAN_TX

CANL接CANL      CANH接CANH

二、初始化函数(STM32F407)

u8 CAN1_Init(u8 tsjw,u8 tbs2,u8 tbs1,u16 brp,u8 mode)
{GPIO_InitTypeDef GPIO_InitABC;CAN_InitTypeDef CAN_InitABC;CAN_FilterInitTypeDef CAN_FilterInitABC;
#CAN1_RXO_INT_ENABLENVIC_InitTypeDef NBIC_InitABC;
#endif//使能RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE);RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN1,ENABLE);//初始化GPIOGPIO_InitABC.GPIO_Pin=GPIO_Pin_11|GPIO_Pin_12;GPIO_InitABC.GPIO_Mode=GPIO_Mode_AF;GPIO_InitABC.GPIO_OType=GPIO_OType_PP;GPIO_InitABC.GPIO_Speed=GPIO_Speed_100MHz;GPIO_InitABC.GPIO_PuPd=GPIO_PuPd_UP;GPIO_Init(GPIOA,&GPIO_InitABC);//引脚复用映射,使用CAN功能GPIO_PinAFConfig(GPIOA,GPIO_PinSource1,GPIO_AF_CAN1);GPIO_PinAFConfig(GPIOA,GPIO_PinSource2,GPIO_AF_CAN1);//CAN初始化  单元设置CAN_InitABC.CAN_TTCM=DISABLE;CAN_InitABC.CAN_ABOM=DISABLE;CAN_InitABC.CAN_AWUM=DISABLE;CAN_InitABC.CAN_NART=ENABLE;CAN_InitABC.CAN_RFLM=DISABLE;CAN_InitABC.CAN_TXFP=DISABLE;CAN_InitABC.CAN_Mode=mode;CAN_InitABC.CAN_SJW=tsjw;CAN_InirABC.CAN_BS1=tbs1;CAN_InitABC.CAN_BS2=tbs2;CAN_InitABC.CAN_Prescaler=brp;CAN_Init(CAN1,&CAN_InitABC);
}

配置过滤器(接收所有ID)

{
CAN_FilterInitABC.CAN_FilterNumber=0;
CAN_FilterInitABC.CAN_FilterMode=CAN_FilterMode_IdMask;
CAN_FilterInitABC.CAN_FilterScale=CAN_FilterScale_32bit;
CAN_FilterInitABC.CAN_FilterIdHigh=0x0000;
CAN_FilterInitABC.CAN_FilterIdLow=0x0000;
CAN_FilterInitABC.CAN_FilterMaskIdHigh=0x0000;
CAN_FilterInitABC.CAN_FilterMaskIdLow=0x0000;
CAN_FilterInitABC.CAN_FilterFIFOAssignment=CAN_Filter_FIFO;
CAN_FilterInitABC.CAN_FilterActivation=ENABLE;
CAN_FilterInit(&CAN_FilterInitABC);
}

发送函数:

//CAN发送一组数据(固定格式:ID为0X12,标准帧,数据帧)
//len:数据长度(最大为8)
//msg:数据指针,最大为8个字节
//返回值:0,成功  返回其它代表失败
u8 Can_Send_Msg(u8* msg,u8 len)
{u8 mbox;//发送邮箱u16 i=0;CanTxMsg TxMessage;TxMessage.Stdld=0x12;//标准标识符TxMessage.Extld=0x12;//设置扩展标识符TxMessage.IDE=CAN_Id_Standard;//标准帧TxMessage.RTR=CAN_RTR_Data;//数据帧TxMessage.DLC=len;//要发送的数据长度for(i=0;i<len;i++) TxMessage.Data[i]=msg[i];mbox=CAN_Transmit(CAN1,&TxMessage);i=0;while((CAN_TransmitStatus(CAN1,mbox)==CAN_TxStatus_Falied)&&(i<0XFFF)) i++;//等待发送结束if(i>=0XFFF)  return 1;return 0;
}

接收函数:

//CAN口接收数据查询
//buf:数据缓存区
//返回值:0,无数据
u8 Can_Receive_Msg(u8 *buf)
{u32 i;CanRxMsg RxMessage;if(CAN_MessagePending(CAN1,CAN_FIFO)==0) return 0;//没有接收到数据,直接退出CAN_Receive(CAN1,CAN_FIFO0,&RxMessage);//读取数据for(i=0;i<8;i++) buf[i]=RxMessage.Data[i];return RxMessage.DLC;
}

STM32——CAN通信实验相关推荐

  1. STM32——串口通信实验

    STM32串口通信实验:字符.字符串.数组 准备工作 编程逻辑顺序 初始化结构体 1.USART初始化结构体: 2.同步时钟初始化结构体: 源码 准备工作 1.找一个空白文件,新建usart.c 和u ...

  2. STM32 RS232通信实验

    stm32F103 RS232通信实验 什么是RS232? 软件设计 完整工程下载 什么是RS232? 先来看看UART传输所存在的问题 于是就有了RS232协议 这里注意使用的是负逻辑电平信号,在规 ...

  3. STM32——SPI通信实验

    程序配置过程: 1.使能SPIx和IO口时钟: RCC_AHBxPeriphClockCmd()/RCC_APBxPeriphClockCmd(); 2.初始化IO口为复用功能: void GPIO_ ...

  4. STM32——485通信实验

    一.串口 串口是一种接口标准,它规定了接口的电气标准,简单说只是物理层的一个标准.没有规定接口插件电缆以及使用的协议,所以只要我们使用的接口插件电缆符合串口标准就可以在实际中灵活使用,在串口接口标准上 ...

  5. PLC、STM32单片机--485modbus通信实验

    PLC.STM32单片机–485modbus通信实验 接线: 单片机 PLC USB转485模块 A-------------------A-------------------A B-------- ...

  6. windows通信端口初始化失败_STM32实例——USART串口通信实验(二)

    USART 串口通信配置步骤 在上面的介绍中,可能有的朋友很不理解,不过没有关系,下面我们讲解如何使用库函数对 USART 进行配置.这个也是在编写程序中必须要了解的.具体步骤如下:(USART 相关 ...

  7. 【正点原子FPGA连载】第十四章 串口通信实验 -摘自【正点原子】新起点之FPGA开发指南_V2.1

    1)实验平台:正点原子新起点V2开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id=609758951113 2)全套实验源码+手册+视频下载地址:ht ...

  8. 安装STM32CubeMX,stm32串口通信

    目录 一.串口通信和RS-232标准 1.串口通信 波特率 数据位 停止位 奇偶校验 2.RS-232标准 二.安装STM32CubeMX,搭建STM32的开发环境 1.安装jdk 2.安装STM32 ...

  9. STM32串口通信代码正确串口却没反应

    现象 在使用stm32f103c8t6进行串口通信实验时,将资料包中的代码下载进去.打开串口,按下复位,发现啥反应都没有,代码也没错误.无论发送什么都是没有反应. 解决方法 将keil5中的Use M ...

  10. 27.串口通信实验源码讲解

    串口通信实验源码讲解 笔记基于正点原子官方视频 视频连接https://www.bilibili.com/video/BV1Wx411d7wT?p=71&spm_id_from=333.100 ...

最新文章

  1. BZOJ 3585: mex( 离线 + 线段树 )
  2. python编写函数_python函数式编程
  3. java replaceall正则表达式_正则表达式的规则及应用
  4. leetcode33 --- search
  5. swoole服务器主动推消息,实现websocket-主动消息推送laravelswoole
  6. 山东大学2016-2017校历
  7. xmlreader php 读取某节点,php – 使用XMLReader选择父节点
  8. execution 排除_使用SQL Server 2016 Live Execution统计信息对SQL查询性能进行故障排除
  9. 多校赛 Barareh on Fire
  10. T-SQL查询处理详解
  11. 仿微信导航栏滑动门练习
  12. 三款好用的记账软件推荐
  13. 德国互联网现状,缺人,4万元每月的收入,可以考虑移民了
  14. 计算机图形学入门(十二)-阴影映射Shadow mapping(为光线追踪准备)
  15. module ‘eli5‘ has no attribute ‘show_weights‘
  16. 蚁群算法ACO求解连续函数最值问题
  17. uniapp 图片模糊解决方案
  18. Excel VBA 讲座04 - 过程,变量,循环和IF语句
  19. 从业编程生涯十年,你要了解的程序员养生之道,以及进阶之路。
  20. 工具 · 移动端调试工具:weinre

热门文章

  1. python数据处理豆瓣_资料 | 利用Python进行数据分析
  2. 应届生面试的5大技巧,附600字自我介绍范文
  3. 百度给创新员工发2000w奖金........
  4. stm32—火焰传感器的初步使用
  5. 裸眼 3D 技术是什么原理?
  6. spyglass 学习笔记之cdc check
  7. 深度技术 GHOST XP 电脑城克隆版 V7.0 (NTFS/F32)
  8. 分布式资源管理与任务调度框架Yarn
  9. android高仿股票源码,StockChart 自定义股票行情图,高仿某币 app 行情图 @codeKK Android开源站...
  10. win10系统计算机如何加密,win10系统自带加密使用的设置方法