学者之家电子论坛--打造电子工程师共同致富的平台's Archiver

bluesky520 发表于 2008-3-13 21:21

[求助]关于LPC2119内部CAN的问题

以下是我修改的基于LPC2119中内置CAN自收发的程序,但不知道怎么的就是接受不到数据,(我用ZLGCANTEST软件调试的),不知道是不是程序出了问题,有那位大虾帮忙看下:<br/>#include "config.h"<br/>#define BPS_250K 0x0017C003&nbsp;&nbsp;&nbsp;&nbsp; /*定义CAN通信波特率*/<br/>#define CAN1 0<br/>void PinSet(uint8 CanNum)<br/>{<br/>&nbsp; PCONP|=~((uint32)0x01&lt;&lt;(13+CanNum));<br/>&nbsp;&nbsp; switch(CanNum)<br/>&nbsp;&nbsp; {<br/>&nbsp;&nbsp; case CAN1:<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PINSEL1&amp;=~((uint32)0x03&lt;&lt;18);<br/>&nbsp;&nbsp; PINSEL1|=((uint32)0x01&lt;&lt;18);<br/>&nbsp;&nbsp; break;<br/>&nbsp;&nbsp; default:<br/>&nbsp;&nbsp; break;<br/>&nbsp;&nbsp; }<br/>}<br/>void SetBaud(uint8 CanNum)<br/>{<br/>&nbsp;&nbsp; switch(CanNum)<br/>&nbsp;&nbsp; {<br/>&nbsp;&nbsp;&nbsp;&nbsp; case CAN1:<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C1BTR=BPS_250K;<br/>&nbsp;&nbsp;&nbsp; break;<br/>&nbsp;&nbsp;default:<br/>&nbsp;&nbsp;break;<br/>&nbsp;&nbsp;}<br/>}<br/>void SetWarmVal(uint8 CanNum)<br/>{<br/>&nbsp; switch(CanNum)<br/>&nbsp; {<br/>&nbsp;&nbsp;&nbsp; case CAN1:<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C1EWL=0x60;<br/>&nbsp;&nbsp; break;<br/>&nbsp;default:<br/>&nbsp;&nbsp; break;<br/>&nbsp;&nbsp; }<br/>}<br/>void SetInterrupt(uint8 CanNum)<br/>{<br/>&nbsp; switch(CanNum)<br/>&nbsp; {<br/>&nbsp; case CAN1:<br/>&nbsp;&nbsp;&nbsp; C1IER=0x00;<br/>&nbsp;&nbsp;&nbsp; break;<br/>&nbsp;&nbsp;&nbsp; default:<br/>&nbsp;&nbsp;&nbsp; break;<br/>&nbsp;&nbsp;&nbsp; }<br/>}<br/>void InitCAN(uint8 CanNum)<br/>{<br/>&nbsp;&nbsp;&nbsp; PinSet(CanNum);<br/>&nbsp;switch(CanNum)<br/>&nbsp;{<br/>&nbsp;&nbsp; case CAN1:<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C1MOD=C1MOD|0X01;&nbsp;&nbsp;&nbsp; //软件复位CAN1控制器<br/>&nbsp;&nbsp;&nbsp;&nbsp; SetWarmVal(CAN1);<br/>&nbsp;&nbsp;&nbsp;&nbsp; SetBaud(CAN1);<br/>&nbsp;&nbsp;&nbsp;&nbsp; SetInterrupt(CAN1);<br/>&nbsp;&nbsp;&nbsp;&nbsp; C1MOD=C1MOD&amp;0xFE;&nbsp;&nbsp;&nbsp; //软件复位CAN1控制器<br/>&nbsp;&nbsp;&nbsp;&nbsp; break;<br/>&nbsp;&nbsp;default:<br/>&nbsp;&nbsp;&nbsp;&nbsp; break;<br/>&nbsp;&nbsp;&nbsp;&nbsp; }<br/>}<br/>void __irq CANIntPrg(void)<br/>{&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp; unsigned long temp;<br/>&nbsp;temp=C1ICR;&nbsp;&nbsp;&nbsp; //清除中断方式<br/>&nbsp;&nbsp;&nbsp;&nbsp; C1TFI1=(C1RFS&amp;((unsigned long)1&lt;&lt;31))|<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (C1RFS&amp;(1&lt;&lt;30))|(C1RFS&amp;(0x0F&lt;&lt;16))<br/>&nbsp;&nbsp;&nbsp;|0x00;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;//接收到的帧信息写入发送帧信息寄存器<br/>&nbsp;&nbsp;&nbsp; C1TID1=C1RID;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//接收到的帧ID写入发送帧ID寄存器<br/>&nbsp;&nbsp;&nbsp;&nbsp; C1TDA1=C1RDA;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//前4字节数据写入发送前4字节寄存器<br/>&nbsp;&nbsp;&nbsp;&nbsp; C1TDB1=C1RDB;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//后4字节数据写入后4字节寄存器<br/>&nbsp;&nbsp;&nbsp;&nbsp; C1CMR=1&lt;&lt;5|1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//选择第一缓冲并启动发送<br/>&nbsp;&nbsp;&nbsp;&nbsp; C1CMR=0x04;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//释放接收缓冲<br/>&nbsp;&nbsp;&nbsp;&nbsp; VICVectAddr=0x00;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//通知中断结束<br/>}<br/>int main(void)<br/>{<br/>&nbsp;&nbsp;&nbsp;&nbsp; InitCAN(CAN1);<br/>&nbsp; VICDefVectAddr=(uint32)CANIntPrg;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //设置CAN1为非向量中断<br/>&nbsp;&nbsp; VICIntEnable|=(1&lt;&lt;19)|(1&lt;&lt;20)|(1&lt;&lt;26);&nbsp;&nbsp;&nbsp; //使能CAN1中断通道<br/>&nbsp;&nbsp; AFMR=0x03;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //设置验收过滤模式为旁路模式&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp; while(1);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //等待中断<br/>&nbsp;&nbsp; return 0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>}

hongjing 发表于 2010-4-7 16:31

[b]工作感悟之财务人员十年比较[/b]

严格说来,从事财务工作,不止十年了。
十年前,丁字帐;凭证汇总平衡;凭证过账,明细账对总账;做工资表时,横竖一致,明细表与汇总表一致……,很是考校基本功。需要扎实的“坐”工与耐心。
十年后,只要凭证输入没有问题,点击一下,明细账、总账、报表全出来。很大程度将财务人员从简单劳动中解脱出来。但是,普遍存在财务人员基本功差,定力不够,普遍浮躁。
如果凭证录入有误,出现错误,很难查找。
十年后的财务人员,缺乏一种感性认识。
十年前的做法,尽管枯燥,但在凭证汇总、登明细账的过程中能够及时发现问题,解决问题;
十年后的今天,财务人员普遍从简单劳动中解脱出来了。
那么就要投入更多的精力与时间参与到[url=http://www.hongjingedu.com/]企业管控[/url]中去。最大地发挥财务人员的潜能。
像我们70年代出生,90年代参加工作的财务人员,能非常深刻地体会到财务的发展与科学技术的发展的紧密结合。
不要丢弃十年前的好习惯,结合高度发展的应用技术,相信你我,终将成为企业财务中坚力量。









[font=宋体][size=2][color=#000000][/color][/size][/font][img]http://www.im286.net/attachment/201003/2/456757_1267524662BoZd.gif[/img]

[font=宋体][size=2][url=http://www.hongjingedu.com/][color=#800080]权威美国CPA培训机构-宏景国际教育[/color][/url][/size][/font]

页: [1]

Powered by Discuz! Archiver 7.1  © 2001-2009 Comsenz Inc.

302 Found

302 Found


nginx/1.8.0