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

2019-07-26 20:18发布

前面设置都是按照网上的设置进行的,结果设置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进行操作。
    //  配置波特率

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
11条回答
micronsun
1楼-- · 2019-07-27 01:59
 精彩回答 2  元偷偷看……
edishen
2楼-- · 2019-07-27 02:01
仔细检查硬件原因吧  
gygp
3楼-- · 2019-07-27 03:25
看看变量是不是超了
jiayou8
4楼-- · 2019-07-27 04:19
楼主,问题解决了吗,我才用的是TI 28335的例程 eCAN BACK2BACK,也是进入while(ECanaShadow.CANES.bit.CCE != 1);循环后就死掉了,楼主使用的什么方法?
micronsun
5楼-- · 2019-07-27 08:22
eallow 一开始就使能,这几个寄存器都要求eallow
zhangjin_comeon
6楼-- · 2019-07-27 11:30
 精彩回答 2  元偷偷看……

一周热门 更多>