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进行操作。
    //  配置波特率

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。