#include <hidef.h>
#include “derivative.h”
#include “can.h”

void init_can0(void)
{
if(CAN0CTL0_INITRQ0)
CAN0CTL0_INITRQ=1;
while(CAN0CTL1_INITAK0);
CAN0BTR0_SJW=1;
CAN0BTR0_BRP=7;
CAN0BTR1 = 0x1c;
//CAN0IDAR0=0xFF;
CAN0IDMR0=0xFF;
CAN0IDMR1=0xFF;
CAN0IDMR2=0xFF;
CAN0IDMR3=0xFF;
CAN0IDMR4=0xFF;
CAN0IDMR5=0xFF;
CAN0IDMR6=0xFF;
CAN0IDMR7=0xFF;
CAN0CTL1 = 0xC0;
CAN0CTL0 = 0x00;
//while(CAN0CTL0_INITRQ1);
while(CAN0CTL1_INITAK1);
while(CAN0CTL0_SYNCH==0);
CAN0RIER_RXFIE=1;
}

can_send(struct msg_a_s msg_a)
{ unsigned long sp;
if(msg_a.len>8)
return(0);
if(CAN0CTL0_SYNCH==0)
return(0);
do
{
CAN0TBSEL=CAN0TFLG;

}while(CAN0TBSEL0);
if(msg_a.RTR0)

{
if(msg_a.ide0)
{
CAN0TXIDR0=(unsigned long)msg_a.id>>3;
CAN0TXIDR1=(unsigned long)msg_a.id<<5;
}
else {
CAN0TXIDR0=(unsigned long)msg_a.id>>21;
CAN0TXIDR1=(unsigned long)(((unsigned long)msg_a.id>>15&0x07)|((unsigned long)msg_a.id>>13&0xE0)|0x18);
CAN0TXIDR2=(unsigned long)msg_a.id>>7;
CAN0TXIDR3=(unsigned long)msg_a.id<<1;
}
for(sp=0;sp<msg_a.len;sp++)
*(&CAN0TXDSR0+sp)=msg_a.data[sp];
}
else
{ if(msg_a.ide0)
{
CAN0TXIDR0=(unsigned long)msg_a.id>>3;
CAN0TXIDR1=(unsigned long)msg_a.id<<5|0x10;
} else
{
CAN0TXIDR0=(unsigned long)msg_a.id>>21;
CAN0TXIDR1=(unsigned long)(((unsigned long)msg_a.id>>15&0x07)|((unsigned long)msg_a.id>>13&0xE0)|0x18);
CAN0TXIDR2=(unsigned long)msg_a.id>>7;
CAN0TXIDR3=(unsigned long)msg_a.id<<1|0x01;
}

}

CAN0TXDLR=msg_a.len;
CAN0TXTBPR=msg_a.pro;
CAN0TFLG=1;
}

can_receive(struct msg_a_s *msg_a)
{ unsigned int sp1;
//if(CAN0RXDLR>8)
//return(0);
while(CAN0RFLG0);
msg_a->len=CAN0RXDLR;
if(msg_a->len>8)
return(0);
else {
msg_a->ide=CAN0RXIDR1_IDE;
if(msg_a->ide1) {

msg_a->id=(unsigned long)(CAN0RXIDR0<<21)|(unsigned long)((CAN0RXIDR1&0xE0)<<13)|
(unsigned long)((CAN0RXIDR1&0x07)<<15)|(unsigned long)(CAN0RXIDR2<<7)|(unsigned long)(CAN0RXIDR3>>1);
msg_a->RTR=(unsigned long)CAN0RXIDR3&0x01;
}
else
{
msg_a->id=(unsigned long)CAN0RXIDR1>>5|(unsigned long)CAN0RXIDR0<<3;
msg_a->RTR=((unsigned long)CAN0RXIDR1&0x10)>>4;
}
}
for(sp1=0;sp1<msg_a->len;sp1++)
msg_a->data[sp1]=*(&CAN0RXDSR0+sp1);
CAN0RFLG=1;

}

#ifndef CAN_H
#define CAN_H
struct msg_a_s
{
unsigned long id;
unsigned int ide;
unsigned int len;
unsigned int RTR;
unsigned int data[8];
unsigned int pro;
};
extern void init_can0(void);
extern can_receive(struct msg_a_s *msg_a);
extern can_send(struct msg_a_s msg_a);
#endif

ep100can程序相关推荐

  1. 编程精粹 --Microsoft编写优质无错C程序秘诀

    献给我的妻子Beth, 以及我的双亲Joseph和Julia Maguire ────为了他们的爱和支持 序 1986年,在为几家小公司咨询和工作了10年之后为了获得编写Macintosh应用程序的经 ...

  2. POCO C++库学习和分析 -- 序

    POCO C++库学习和分析 -- 序 1. POCO库概述: POCO是一个C++的开源库集.同一般的C++库相比,POCO的特点是提供了整一个应用框架.如果要做C++程序应用框架的快速开发,我觉得 ...

  3. 程序主动进行电话短信报警,自定义电话、短信、钉钉报警通知

    程序主动进行电话短信报警,自定义电话.短信.钉钉报警通知 一. 规则说明 这里我们要利用到阿里云的云监控的手段,有一个叫做事件监控的东西,可以通过自定义事件上传来进行监控报警. 流程: 程序发现错误 ...

  4. 终止js程序执行的方法

    js终止程序执行的方法共有三种 (一)在function里面(普通js方法) (1)return; (2)return false; (二)非function方法里面(如ajax方法) alert(& ...

  5. 【Golang源码分析】Go Web常用程序包gorilla/mux的使用与源码简析

    目录[阅读时间:约10分钟] 一.概述 二.对比: gorilla/mux与net/http DefaultServeMux 三.简单使用 四.源码简析 1.NewRouter函数 2.HandleF ...

  6. 【ReactiveX】基于Golang pmlpml/RxGo程序包的二次开发

    基于Golang pmlpml/RxGo程序包的二次开发[阅读时间:约20分钟] 一.ReactiveX & RxGo介绍 1.ReactiveX 2.RxGo 二.系统环境&项目介绍 ...

  7. 【golang程序包推荐分享】分享亿点点golang json操作及myJsonMarshal程序包开发的踩坑经历 :)

    目录[阅读时间:约5分钟] 一.概述 1.Json的作用 2.Go官方 encoding/json 包 3. golang json的主要操作 二.Json Marshal:将数据编码成json字符串 ...

  8. 基于Golang的对象序列化的程序包开发——myJsonMarshal

    基于Golang的对象序列化的程序包开发--myJsonMarshal[阅读时间:约10分钟] 一.对象序列化概述 二.系统环境&项目介绍 1.系统环境 2.项目的任务要求 三.具体程序设计及 ...

  9. 【golang程序包推荐分享】go-ini、viper、godoc

    [golang程序包推荐&分享]go-ini.viper.godoc 一.go-ini 1.程序包简介 2.下载安装 3.简单使用[截取自官网] 二.viper 1.程序包简介 2.下载安装 ...

  10. 基于Golang的监听读取配置文件的程序包开发——simpleConfig_v1

    基于Golang的监听&读取配置文件的程序包开发--simpleConfig_v1 [阅读时间:约10分钟] 一.配置文件概述 二.系统环境&项目介绍 1.系统环境 2.项目的任务要求 ...

最新文章

  1. java中的异常及其处理
  2. 《Cisco IOS XR技术精要》一4.4 理解二级提交模型
  3. ThinkPHP+AJAX三级联动
  4. bat文件无法保存为ansi_数组矩阵和PNG保存为nii文件
  5. 在服务器上搭建基于yolo3 与crnn 实现中文自然场景文字检测及识别,GPU版本
  6. MSPA安装与生态源地提取
  7. Composer Player 属性设置
  8. 基于阿尔法贝塔剪枝算法的五子棋_C4.5算法剪枝2
  9. 线性代数及其应用:绪论
  10. Windows下搭建FTP服务,FileZilla Server
  11. 阿里云企业邮箱用smtp发送邮件失败解决
  12. C#使用itextsharp生成PDF文件含页脚页眉
  13. chrome离线小恐龙改造版
  14. OpenCV4.3 Java 编程入门:Core 组件中的数据结构与方法
  15. wo-27s管理员账户和密码_“无法使用内置管理员账户打开”应用
  16. 发送打印任务后不打印
  17. 小程序input组件type=“nickname“获取不到微信昵称的值,解决方法
  18. 42、PCF8563电子时钟实验
  19. unity打包xcode,在iOS11设备调试报错
  20. 7-40 奥运排行榜 (25 分)

热门文章

  1. 【校招VIP】前端js语言考点之事件冒泡与捕捉
  2. InVEST模型(生态系统服务)
  3. 服装管理解决方案丨汇信
  4. Java 常见面试题
  5. siamfc代码解读_每日一文:目标跟踪(SiamFC)
  6. CSS的三种引入方式(行内样式、内部样式、外部样式)
  7. 记录点滴——2020年终总结
  8. Java实现“斐波那契数列”的方法(循环,递归,优化递归)
  9. 如何使用ccs软件创建工程
  10. Linux之交叉编译器的构建