2812 调试ECAN,死在while(ECanaShadow.CANES.bit.CCE != 1);

[复制链接]
4588|11
 楼主| micronsun 发表于 2015-1-20 18:15 | 显示全部楼层 |阅读模式
前面设置都是按照网上的设置进行的,结果设置CANBTC时,将寄存器放在ECanaShadow时 ,死掉了
没法运行下去了
我市在ran里边调试的.
以下是程序:
EALLOW;
//  邮箱中断屏蔽寄存器。上电后所有的中断屏蔽位都清零且停止中断使能。
//  这些位允许独立屏蔽任何邮箱中断。
ECanaRegs.CANMIM.all = 0xFFFFFFFF;  
//  CANMIM .BIT.X=1  邮箱中断被使能(X=1~31)
//  CANMIM .BIT.X=0  邮箱中断被禁止(X=1~31)
ECanaShadow.CANMC.all = ECanaRegs.CANMC.all; //  把CANMC读入影子寄存器
ECanaShadow.CANMC.bit.CCR = 1;               //  改变配置请求位  
ECanaRegs.CANMC.all = ECanaShadow.CANMC.all; //  把配置好的寄存器值回写
   EDIS;
/*CPU要求对配置寄存器CANBTC和SCC的接收屏蔽寄存器(CANGAM,LAM[0]和LAM[3])进行写操作。对该位置位后,CPU必须等待,直到CANES寄存器的CCE标志位在送入CANBTC寄存器之前为1 */
do
    {
      ECanaShadow.CANES.all = ECanaRegs.CANES.all;
    } while(ECanaShadow.CANES.bit.CCE != 1 );  //  当CCE=1时可以对CANBTC进行操作。
    //  配置波特率

 楼主| micronsun 发表于 2015-1-20 18:17 | 显示全部楼层
程序在另一个开发板上可以运行
edishen 发表于 2015-1-27 23:16 | 显示全部楼层
仔细检查硬件原因吧  
gygp 发表于 2015-1-27 23:49 | 显示全部楼层
看看变量是不是超了
jiayou8 发表于 2015-1-30 14:55 | 显示全部楼层
楼主,问题解决了吗,我才用的是TI 28335的例程 eCAN BACK2BACK,也是进入while(ECanaShadow.CANES.bit.CCE != 1);循环后就死掉了,楼主使用的什么方法?
 楼主| micronsun 发表于 2015-1-30 16:54 | 显示全部楼层
eallow 一开始就使能,这几个寄存器都要求eallow
zhangjin_comeon 发表于 2015-1-31 18:15 | 显示全部楼层
jiayou8 发表于 2015-1-30 14:55
楼主,问题解决了吗,我才用的是TI 28335的例程 eCAN BACK2BACK,也是进入while(ECanaShadow.CANES.bit.CCE ...

看看楼下的建议吧
jiayou8 发表于 2015-1-31 18:30 | 显示全部楼层
是刚开始eallow 一次,后面使用寄存器就不用eallow 吗,麻烦楼主帮我看看我的程序有什么问题,谢谢楼主了。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
jiayou8 发表于 2015-1-31 21:07 | 显示全部楼层
谢谢楼主,我的问题解决了,原来是时钟没使能,谢谢了。
core717 发表于 2015-4-3 10:35 | 显示全部楼层
jiayou8 发表于 2015-1-31 21:07
谢谢楼主,我的问题解决了,原来是时钟没使能,谢谢了。

我想问下您是在哪里修改的时钟使能语句呢
tpec_jiang 发表于 2015-7-27 11:08 | 显示全部楼层
jiayou8 发表于 2015-1-31 21:07
谢谢楼主,我的问题解决了,原来是时钟没使能,谢谢了。

多谢,同样的问题
tpec_jiang 发表于 2015-7-27 11:10 | 显示全部楼层
core717 发表于 2015-4-3 10:35
我想问下您是在哪里修改的时钟使能语句呢

一般都是在2DSP28_SysCtrl.c中
您需要登录后才可以回帖 登录 | 注册

本版积分规则

18

主题

41

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部