软件:keil5、EmbededDebug v2.0

目的:按下按键芯片能发送给电脑。当电脑发送时,触发中断,而后芯片把收到的数据返回给电脑

以下必须有,放入主函数:

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置系统中断优先级分组2

delay_init(168);    //初始化延时函数

LED_Init(); //初始化LED

KEY_Init(); //按键初始化

CAN1_Mode_Init(CAN_SJW_1tq,CAN_BS2_6tq,CAN_BS1_7tq,6,CAN_Mode_Normal);//500K

while(1)

{

key=KEY_Scan(0);//按键扫描

if(key==KEY0_PRES)//KEY0按下,发送一次数据

{

for(i=0;i<8;i++)

{

canbuf[i]=i;//填充发送缓冲区

}

CAN1_KeySend_Msg(canbuf,8);

}

}

使用扩展帧,不用标准帧:

u8 CAN1_KeySend_Msg(u8* msg,u8 len)

{

u8 mbox;

u16 i=0;

CanTxMsg TxMessage;

//TxMessage.StdId=0x18; //  This parameter can be a value between 0 to 0x7FF.  标准的不用了

TxMessage.ExtId=0x181056f4; // This parameter can be a value between 0 to 0x1FFFFFFF 使用扩展

//TxMessage.IDE=0;

TxMessage.IDE=1; //使用扩展置1

TxMessage.RTR=0;// 消息类型为数据帧

TxMessage.DLC=len;

for(i=0;i

TxMessage.Data[i]=msg[i];

mbox= CAN_Transmit(CAN1, &TxMessage);

i=0;

while((CAN_TransmitStatus(CAN1, mbox)==CAN_TxStatus_Failed)&&(i<0XFFF))i++;//等待发送结束

if(i>=0XFFF)return 1;

return 0;

}

最重要的就是:CAN_Transmit()

在stm32f4xx_can.c文件中

如果用例程,使用扩展帧的时候一直都失败

所以需要修改的地方如下:

assert_param(IS_CAN_EXTID(TxMessage->ExtId));

CANx->sTxMailBox[transmit_mailbox].TIR |= ((TxMessage->ExtId << 3) | \

TxMessage->IDE<<2 | \

TxMessage->RTR<<1);

现在自己写一个结构体用来存放自己想发送的数据

typedef struct CAN_Tx{

u16 DA;               //指定发送的数据

u16 DB;

u16 DC;

u16 DD;

u16 Ide;

u16 Rtr;

u16 Len;                //指定字节数

u32 RevMBXnID ;         //指定发送的ID号,

}TCAN_Msg;

TCAN_Msg  CANTxMsg[]={{0,0,0,0, 0,0,0,0x00}};

再搞一个指针TCAN_Msg *PtrCanTx = &CANTxMsg[0];//指向结构体地址

就可以这样了:PtrCanTx-> Len = 8;

再写一个和上面u8 CAN1_KeySend_Msg(u8* msg,u8 len)差不多的函数

就叫:u8  CAN1_Send_Msg(TCAN_Msg *CANTx)

对于中断服务函数:

在初始化的时候(用例程就行)已开启中断,所以电脑发送数据就会触发中断(FIFO0消息挂号中断允许.)

void CAN1_RX0_IRQHandler(void)

在中断中可以写一些,接收到某消息后的某动作啥的

================================================================

按键按下发送:0x01 0x02 0x03 0x04 0x05 0x06 0x07

在程序里写想发送的数据:0x01 0x00 0x00 0x00 0x00 0x00

STM32F407的CAN通信实验相关推荐

  1. USART串口通信实验

    整理自:正点原子PPT 文章目录 串口简介 串口通信基本原理 常用串口相关寄存器 串口操作相关函数 硬件连接 串口配置一般步骤 例程参考 升级版 串口简介 详情见STM32F4开发指南 串口通信基本原 ...

  2. 利用三层交换机实现VLAN的通信实验报告

    利用三层交换机实现VLAN的通信实验报告<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office ...

  3. 树莓派4bpython串口通信解读数据_树莓派基础实验36:通用串口通信实验

    一.介绍 对于树莓派 3B+来说,他的UART功能有三种: 1.内部蓝牙使用: 2.控制终端使用: 3.与其他设备进行串口通信. 在树莓派基础实验35:USB TO TTL模块实验中学习了通过串口对树 ...

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

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

  5. SPI通信实验---verilog(FPGA作为从机,使用可读可写)

    文章原地址: http://www.cnblogs.com/fhyfhy/p/4429302.html SPI通信实验---verilog(FPGA作为从机,使用可读可写) 本实验讲究实用性,故设计思 ...

  6. 【正点原子Linux连载】第七十一章 Linux 4G通信实验 -摘自【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.0

    1)实验平台:正点原子阿尔法Linux开发板 2)平台购买地址:https://item.taobao.com/item.htm?id=603672744434 2)全套实验源码+手册+视频下载地址: ...

  7. 基于FPGA的UART串口通信实验(VHDL语言实现)

    一.前言: 最近在做UART串口通信的相关实验时,在网上查了很多资料,发现网上的大部分文章只注重理论,不注重代码,很多代码有错误不说,而且难以理解.故在完成此实验后,起了写一篇博客的心思,以供有想做相 ...

  8. 【正点原子FPGA连载】 第十七章 RS485串口通信实验 -摘自【正点原子】领航者ZYNQ之FPGA开发指南_V2.0

    1)实验平台:正点原子领航者ZYNQ开发板 2)平台购买地址:https://item.taobao.com/item.htm?&id=606160108761 3)全套实验源码+手册+视频下 ...

  9. 【BLE】nrf connect配置为服务端进行蓝牙主从通信实验

    需求背景 在进行BLE模块调试时,我们通常配置nrf connect APP作为蓝牙客户端,扫描蓝牙开发板的广播,进行连接. 然而当进行蓝牙主从通信实验时,为了调试主机端程序,如果手上只有一块开发板, ...

最新文章

  1. JVM笔记6-垃圾回收器
  2. Could not calculate build plan: Plugin org.apache.maven.plugins:maven-war-plugin:2.4
  3. 构造代码块会想你所想
  4. 信息学奥赛一本通 1056:点和正方形的关系 | OpenJudge NOI 1.4 18
  5. 「干货」不逼自己一下不知道自己多牛逼[python篇]
  6. vue3 编译很慢_Vue 项目编译时间过长问题
  7. 【Elasticsearch】如何在 Elasticsearch 中轻松编写脚本
  8. ASP.NET的页面生存周期 [转]
  9. 对象流的序列化和反序列化
  10. [深度学习][转载]人脸识别相似度计算方法
  11. TIA博途中如何将CPU导出为GSD文件与其他PLC进行PROFINET通信?
  12. 面向对象的英文全称叫做Object Oriented
  13. 计算机公式算乘法,excel表格乘法计算公式的用法
  14. Gym 100818F Irrational Roots
  15. 使用互传APP实现Android手机投屏到windows电脑
  16. 苹果Mac系统历年名称和版本号
  17. 新编日语第四册(修订版)第03课 应用文
  18. Activity生命周期和启动模式
  19. 如何查看别人通过百度云盘分享的文件
  20. Linux ❉ top命令详解

热门文章

  1. I love English
  2. 接口自动化测试之Mock
  3. 常对象、常数据成员、常成员函数
  4. Accoona VS. Google
  5. ARM generic timer驱动代码分析
  6. 计算机未来发展趋势生物计算机,电子计算机行业发展趋势及行业市场规模预测...
  7. 车联网,车载ivi(hu)等。
  8. C语言入门:求符合给定条件的整数集
  9. mysql datareader dataset_c# 将数据库返回对象DataReader转换为DataSet的方法分享
  10. 算法基础:排序算法之冒泡排序