欢迎来到天天文库
浏览记录
ID:51117476
大小:24.27 KB
页数:8页
时间:2020-03-18
《DSP28335 CAN通讯程序 中文说明.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、#include"DSP2833x_Device.h"//DSP2833xHeaderfileIncludeFile#include"DSP2833x_Examples.h"//DSP2833xExamplesIncludeFile//Prototypestatementsforfunctionsfoundwithinthisfile.voidmailbox_check(int32T1,int32T2,int32T3);voidmailbox_read(int16i);//GlobalvariableforthisexampleUint32ErrorCount;Uint
2、32PassCount;Uint32MessageReceivedCount;Uint32TestMbox1=0;Uint32TestMbox2=0;Uint32TestMbox3=0;voidmain(void){Uint16j;//eCAN控制寄存器需要使用32位的读/写访问。因此,为此示例创建一组影子寄存器。这些影子寄存器将用于确保访问是32位而不是16位。structECAN_REGSECanbShadow;//步骤1.初始化系统控制:PLL,看门狗,启用外设时钟。该示例功能可在DSP2833x_SysCtrl.c文件中找到。InitSysCtrl();//步骤
3、2.初始化GPIO:在DSP2833xGpio.c文件中找到该示例函数,并说明如何将GPIO设置为默认状态。//InitGpio();//Skippedforthisexample//在这个例子中,使用GPIO寄存器在这里配置CAN引脚。这个函数在DSP2833x_ECan.c中找到InitECanGpio();//步骤3。清除所有中断并初始化PIE矢量表:禁用CPU中断DINT;//将PIE控制寄存器初始化为默认状态。默认状态是禁止所有的PIE中断并清除标志。这个函数可以在DSP2833x_PieCtrl.c文件中找到。InitPieCtrl();//禁用CPU中断并
4、清除所有CPU中断标志:IER=0x0000;IFR=0x0000;//InitializethePIEvectortablewithpointerstotheshellInterrupt//ServiceRoutines(ISR).//Thiswillpopulatetheentiretable,eveniftheinterrupt//isnotusedinthisexample.Thisisusefulfordebugpurposes.//TheshellISRroutinesarefoundinDSP2833x_DefaultIsr.c.//Thisfunctio
5、nisfoundinDSP2833x_PieVect.c.InitPieVectTable();//步骤4.初始化所有器件外设:此功能可在DSP2833x_InitPeripherals.c中找到.//InitPeripherals();//Notrequiredforthisexample//第5步。用户特定的代码,启用中断:MessageReceivedCount=0;ErrorCount=0;PassCount=0;//eCAN控制寄存器需要32位访问。如果要写入单个位,编译器可能会将此访问分解为16位访问。此处介绍的一种解决方案是使用影子寄存器来强制32位访问。
6、//将整个寄存器读入一个影子寄存器。这个访问将是32位。更改所需的位并将其值复制到32位写入的eCAN寄存器。//为eCAN传输配置eCANRX和TX引脚EALLOW;ECanbShadow.CANTIOC.all=ECanbRegs.CANTIOC.all;//eCANI/O控制寄存器ECanbShadow.CANTIOC.bit.TXFUNC=1;//CANTX引脚用于CAN发送功能ECanbRegs.CANTIOC.all=ECanbShadow.CANTIOC.all;ECanbShadow.CANRIOC.all=ECanbRegs.CANRIOC.all;/
7、/eCANI/O控制寄存器ECanbShadow.CANRIOC.bit.RXFUNC=1;//CANRX引脚用于CAN发送功能ECanbRegs.CANRIOC.all=ECanbShadow.CANRIOC.all;EDIS;//禁用所有的邮箱。//因为写入整个寄存器(而不是一个位域),影子寄存器是不需要的。ECanbRegs.CANME.all=0;//邮箱激活寄存器:激活或者屏蔽独立的邮箱//邮箱可以一次写入16位或32位。写入TRANSMIT邮箱的MSGID字段MBOX0-15。ECanbMboxes.MBOX0.MSGID.a
此文档下载收益归作者所有