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条回答
jiayou8
1楼-- · 2019-07-27 12:29
是刚开始eallow 一次,后面使用寄存器就不用eallow 吗,麻烦楼主帮我看看我的程序有什么问题,谢谢楼主了。
jiayou8
2楼-- · 2019-07-27 12:41
谢谢楼主,我的问题解决了,原来是时钟没使能,谢谢了。
core717
3楼-- · 2019-07-27 14:12
jiayou8 发表于 2015-1-31 21:07
谢谢楼主,我的问题解决了,原来是时钟没使能,谢谢了。

我想问下您是在哪里修改的时钟使能语句呢
tpec_jiang
4楼-- · 2019-07-27 18:40
jiayou8 发表于 2015-1-31 21:07
谢谢楼主,我的问题解决了,原来是时钟没使能,谢谢了。

多谢,同样的问题
tpec_jiang
5楼-- · 2019-07-27 22:43
 精彩回答 2  元偷偷看……

一周热门 更多>