飞思卡尔MC9S12X:CAN驱动函数在主函数中的应用

发布者:脑电狂潮最新更新时间:2021-07-08 来源: eefocus关键字:飞思卡尔  主函数 手机看文章 扫描二维码
随时随地手机看文章

一、CAN驱动函数

1. CAN初始化函数

具体详细介绍:飞思卡尔MC9S12X:CAN初始化配置


void INIT_MSCAN0(void);


2. CAN发送函数

具体详细介绍:飞思卡尔MC9S12X:CAN发送配置


int MSCAN0_Send(struct can_msg msg);


3. CAN接收函数

具体详细介绍:飞思卡尔MC9S12X:CAN接收配置


int MSCAN0_Receive(struct can_msg msg);


二、CAN驱动函数在主函数中的应用

以上已经详细介绍了CAN驱动函数的配置,但是具体怎么使用我们还不知道,接下来具体介绍CAN驱动函数在主函数中的应用。


具体代码如下:


/*

其他调用和宏定义已省略

*/

#include "CAN.h" //调用CAN驱动文件  

#include "CAN0_CSS.h" //调用CAN数据处理文件


typedef struct can_msg     //定义报文的结构体

{

unsigned long ID; //扩展帧ID

    unsigned int id; //标准帧id

    unsigned char RTR; // RTR: 1为远程帧,0为数据帧

    unsigned char data[8]; //帧数据

    unsigned char len; //数据长度

    unsigned char prty; //优先级

};


struct can_msg  msg_send, msg_get; //定义接收和发送结构体变量


/*

初始化锁相环和初始化ECT模块已省略                     

*/


/*************************************************************/

/*                         延时函数                          */

/*************************************************************/

void delay1ms(unsigned int n) 

{

    unsigned int i;

    for(i=0;i    {

        TFLG1_C0F = 1;              //清除标志位

        TC0 = TCNT + 250;           //设置输出比较时间为1ms

        while(TFLG1_C0F == 0);      //等待,直到发生输出比较事件

    }

}

/*************************************************************/

/*                      中断接收函数                         */

/*************************************************************/

#pragma CODE_SEG __NEAR_SEG NON_BANKED

void interrupt CAN_receive(void) 

{

    if(MSCAN0_Receive(msg_get)) 

    {

  Can0ReceiveDataAnalysis(msg_get); //对CAN接收的数据进行处理

  }

}

#pragma CODE_SEG DEFAULT


/*************************************************************/

/*                        主函数                             */

/************************************************************/

void main(void) 

{

  /*其他初始化函数省略*/

  INIT_CAN0();//初始化CAN


  for(;;) 

  {

    Can0Send_data(); //CAN数据发送函数

      delay1ms(500);

  }

}


以下是CAN数据处理函数,写到CAN数据处理文件CAN0_CSS.c中,主函数直接调用。


/*************************************************************/

/*                   CAN接收处理函数                         */

/***********************************************************/

void Can0ReceiveDataAnalysis(can_msg msg)

{

if(msg.id==0x001)//对不同ID的数据进行处理

{

if(msg.data[0]==0x01)

    {

      //相对应的操作:灯亮

    }

    else    

    {

    //相对应的操作:灯灭

    }

}

}

/*************************************************************/

/*                   CAN发送处理函数                         */

/***********************************************************/

void Can0Send_data(void) //举例发送标准帧id:0x001

{

can_msg msg = {0,0,0,{0x00,0x001,0x00,0x00,0x00,0x00,0x00,0x00},0,0};         //报文

unsigned char data[8]={0,1,2,3,4,5,6,7};

msg.id = 0x001; //设置id

msg.RTR = 0; // RTR: 1为远程帧,0为数据帧

msg.len = 8; //设置数据长度

//对数据赋值,加上强制转换不会出错

msg.data[0] = (unsigned char) data[0];

msg.data[1] = (unsigned char) data[1];

msg.data[2] = (unsigned char) data[2];

msg.data[3] = (unsigned char) data[3];

msg.data[4] = (unsigned char) data[4];

msg.data[5] = (unsigned char) data[5];

msg.data[6] = (unsigned char) data[6];

msg.data[7] = (unsigned char) data[7];

msg.prty=1; //设置优先级

MSCAN0_Send(msg); //将以上设置的数据发送出去

}


关键字:飞思卡尔  主函数 引用地址:飞思卡尔MC9S12X:CAN驱动函数在主函数中的应用

上一篇:基于MC9S12G使用编码器(控制)输出PWM
下一篇:MC9S12G128 PWM

推荐阅读最新更新时间:2024-10-30 19:36

飞思卡尔16位单片机(十五)—— 如何批量烧写芯片
我们在进行飞思卡尔单片机开发时,一般使用CodeWarrior软件和usbdm调试器进行。但是在实际生产过程中,采用这种方式烧写芯片效率比较低,而且很多情况下,程序的源码不希望对生产人员开放,本文就是为了这个目的,给大家讲解一下,如何进行芯片的批量烧写。 在进行批量烧写之前,我们默认大家已经安装了飞思卡尔单片机的开发环境,包括软件、调试器驱动。下面我们就进行批量烧写的实现。 首先我们先要找到工程的二进制文件,CodeWarrior中,二进制文件的扩展名为.s19,在工程的bin文件夹下,如下图所示。 将这个文件复制到英文路径下,这一步很关键,因为烧写软件不认中文路径。 接下来将下载器、单片机与计算机连接好。 然
[单片机]
<font color='red'>飞思卡尔</font>16位单片机(十五)—— 如何批量烧写芯片
飞思卡尔MZ系列单片机为国网电表提供完备芯片方案
智能电网 作为下一代电网的发展模式而倍受关注,中国国家电网公司(“中国国网”)也对智能电网进行了全新的规划。在刚刚结束的飞思卡尔技术论坛(FTF)上,除主题演讲外,还就智能电网改造的话题进行了专家讨论会,探讨行业的最新动态和趋势。飞思卡尔也展示了为中国国网新标准而特别研发的、专供中国国网应用的新一代 智能微控制器 ( MCU )MZ系列。 飞思卡尔MZ系列是 智能电表 用MCU,有8位和32位两种,分别基于S08内核和ColdFire内核。两者均支持新国网标准有关基本计量功能增加,费控功能复杂,具备多种抄表通讯模式,以及电子线路布局布线位置相对固定等特点。 MZ系列最主要的特点是所有芯片都可以实现64引
[工业控制]
银河电子选择飞思卡尔的硅调谐器
飞思卡尔半导体的硅调谐器MC44S803为中国数字电视机顶盒升级推波助澜   2007年7月6日 —中国著名的数字电视机顶盒设备生产商之一—江苏银河电子股份有限公司(银河电子)今天宣布,选择飞思卡尔的MC44S803硅调谐器(Silicon Tuner)应用于其数字电视机顶盒。随着中国由模拟向数字电视的升级,数字电视机顶盒推广和普及,作为机顶盒前端的射频硅调谐器技术为机顶盒的升级设计和生产提供了可靠保证,飞思卡尔半导体面向小管脚应用的高性能和低功率的硅调谐器成为众多设计和生产厂家的理想之选。   银河电子在数字电视机机顶盒设计和生产创新方面处于领先地位。公司率先在国内开发生产符合DVB标准的系列化数字机顶盒产品,产品涵盖了数
[焦点新闻]
H3C Technologies 产品采用飞思卡尔QorIQ处理器
IP产品和解决方案提供商H3C Technologies选择飞思卡尔QorIQ 多核处理器技术,提供下一代多业务路由交换机产品系列。 H3C中国分部是惠普的一家子公司,同时也是全球领先的IP产品与解决方案提供商。 该公司计划利用飞思卡尔QorIQ处理器技术的高性能、高能效及超强集成特性开发下一代网络设备,满足全球日益增长的IP流量速率。 这个设计订单显示了飞思卡尔凭借其QorIQ多核处理器系列,在中国这一重要的网络设备市场中已经被广泛认可,并呈现强劲的市场势头。 飞思卡尔副总裁兼网络处理器部门总经理Brett Butler表示,“H3C是网络技术的重要提供商,飞思卡尔的QorIQ处理器将帮助该世界级O
[网络通信]
飞思卡尔大篷车驶进中关村,一路感受创客的疯狂
飞思卡尔携“Internet of Tomorrow(IoTT)巡展–驶向智能未来”大篷车抵达北京,重磅亮相首届中关村创业大街智能硬件节。包括汽车先进的驾驶员辅助系统、可穿戴设备等超过100个最前沿的物联网产品和演示搭乘大篷车,为参观者展示了一个智能的未来物联网世界。   IoTT大篷车驶进中关村创业大街   飞思卡尔亚太区市场营销总监曹跃泷致开幕词   发言人表示,根据研究机构的数据,预计到2020年,全球将有500亿的设备联网,2025年这个数字将达到1万亿。物联网的飞速发展需要产业链的大力支持,飞思卡尔作为一家提供全面覆盖边缘节点、网络和云计算的IoT解决方案公司,业务已经覆盖了从ADAS驾驶员
[嵌入式]
NXP、Freescale合并成车用芯片市场新龙头
    荷兰半导体公司恩智浦(NXP Semiconductor)日前与美国半导体业者飞思卡尔(Freescale Semiconductor)宣布合并,完成合并后,新公司将能提供各式各样汽车芯片产品与服务,成为市场的新龙头。不过虽然如此,其他竞争者也是有备而来,竞争实力不容小觑。   据Electronics360网站报导,恩智浦与飞思卡尔在2015年下半完成合并后,将成为市值40亿美元的半导体公司,每年汽车芯片的销售将超过10亿美元,远高于现今市场的领头羊瑞萨电子(Renesas Electronics)。   有了飞思卡尔的芯片,合并后的新公司能主攻自动紧急煞车、自动巡航定速等自动驾驶系统市场,而飞思卡尔在混合动力汽车市场
[汽车电子]
黑石财团将以176亿美元收购飞思卡尔
  新浪科技讯 北京时间9月16日消息,飞思卡尔本周五宣布,该公司已经同黑石(Blackstone)投资集团领衔的一个财团达成出售协议。根据协议,黑石财团将以每股40美元,总价176亿美元的价格收购飞思卡尔。   除黑石财团之外,Kohlberg Kravis Roberts(KKR)和Bain Capital领衔的一个财团也参与了对飞思卡尔的竞购。黑石财团的出价比飞思卡尔9月8日之前30个交易日的平均股价   高出36%。本周五,飞思卡尔在纽约证券交易所常规交易中下跌0.41美元,报收37.16美元,涨幅为1.09%。在随后的盘后交易中,飞思卡尔上涨2.19美元,报收39.35美元,涨幅为5.89%。尽管已经同黑石财团达成最
[焦点新闻]
飞思卡尔任命德州仪器前高管为CEO 股价涨7%
北京时间6月6日消息,芯片厂商飞思卡尔已经任命前德州仪器高管格雷格·罗维(Gregg Lowe)为新任首席执行官,这一决定将飞思卡尔股价推升了7%。 罗维在1984年加盟德州仪器,在该公司担任的最近一个岗位是模拟半导体部门负责人,这是德州仪器的主要业务之一。罗维将接替里奇·拜尔(Rich Beyer)出任飞思卡尔首席执行官,后者担任这一职位已有四年时间。 分析师认为,这一任命对飞思卡尔来说是个好消息,原因是预计这家公司将从罗维的客户关系和管理经验中受益。加拿大皇家银行分析师道格·弗里德曼(Doug Freedman)指出:“在我们看来,聘用罗维是一个非常明智的决定,他曾在德州仪器管理模拟半导体部门,这一部门在全球模拟半导体市场
[半导体设计/制造]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved