在线时间4 小时
UID114650
注册时间2008-4-29
NXP金币0
该用户从未签到
注册会员

- 积分
- 53
- 最后登录
- 1970-1-1
|
用PE生成的CAN初始化函数,问题出在初始化完成后,清楚 clrReg8Bits(CAN0CTL0, 0x01U); 但是while(CAN0CTL1_INITAK) 没有改变,软件一直在该语句循环。
void CAN0_Init(void)
{
/* CAN0CTL0: INITRQ=1 */
setReg8Bits(CAN0CTL0, 0x01U);
while(CAN0CTL1_INITAK == 0U) { /* Wait for init acknowledge */
}
/* CAN0CTL1: CANE=1,CLKSRC=0,LOOPB=0,LISTEN=0,BORM=0,WUPM=0,SLPAK=0,INITAK=1 */
setReg8(CAN0CTL1, 0x81U);
/* CAN0BTR1: SAMP=0,TSEG22=1,TSEG21=0,TSEG20=1,TSEG13=1,TSEG12=0,TSEG11=0,TSEG10=0 */
setReg8(CAN0BTR1, 0x58U);
/* CAN0BTR0: SJW1=0,SJW0=1,BRP5=0,BRP4=0,BRP3=0,BRP2=0,BRP1=1,BRP0=1 */
setReg8(CAN0BTR0, 0x43U);
/* CAN0IDAC: ??=0,??=0,IDAM1=0,IDAM0=0,??=0,IDHIT2=0,IDHIT1=0,IDHIT0=0 */
setReg8(CAN0IDAC, 0x00U);
/* CAN0IDAR0: AC7=0,AC6=0,AC5=0,AC4=0,AC3=0,AC2=0,AC1=0,AC0=0 */
setReg8(CAN0IDAR0, 0x00U);
/* CAN0IDAR1: AC7=0,AC6=0,AC5=0,AC4=0,AC3=0,AC2=0,AC1=0,AC0=0 */
setReg8(CAN0IDAR1, 0x00U);
/* CAN0IDAR2: AC7=0,AC6=0,AC5=0,AC4=0,AC3=0,AC2=0,AC1=0,AC0=0 */
setReg8(CAN0IDAR2, 0x00U);
/* CAN0IDAR3: AC7=0,AC6=0,AC5=0,AC4=0,AC3=0,AC2=0,AC1=0,AC0=0 */
setReg8(CAN0IDAR3, 0x00U);
/* CAN0IDAR4: AC7=0,AC6=0,AC5=0,AC4=0,AC3=0,AC2=0,AC1=0,AC0=0 */
setReg8(CAN0IDAR4, 0x00U);
/* CAN0IDAR5: AC7=0,AC6=0,AC5=0,AC4=0,AC3=0,AC2=0,AC1=0,AC0=0 */
setReg8(CAN0IDAR5, 0x00U);
/* CAN0IDAR6: AC7=0,AC6=0,AC5=0,AC4=0,AC3=0,AC2=0,AC1=0,AC0=0 */
setReg8(CAN0IDAR6, 0x00U);
/* CAN0IDAR7: AC7=0,AC6=0,AC5=0,AC4=0,AC3=0,AC2=0,AC1=0,AC0=0 */
setReg8(CAN0IDAR7, 0x00U);
/* CAN0IDMR0: AM7=1,AM6=1,AM5=1,AM4=1,AM3=1,AM2=1,AM1=1,AM0=1 */
setReg8(CAN0IDMR0, 0xFFU);
/* CAN0IDMR1: AM7=1,AM6=1,AM5=1,AM4=1,AM3=1,AM2=1,AM1=1,AM0=1 */
setReg8(CAN0IDMR1, 0xFFU);
/* CAN0IDMR2: AM7=1,AM6=1,AM5=1,AM4=1,AM3=1,AM2=1,AM1=1,AM0=1 */
setReg8(CAN0IDMR2, 0xFFU);
/* CAN0IDMR3: AM7=1,AM6=1,AM5=1,AM4=1,AM3=1,AM2=1,AM1=1,AM0=1 */
setReg8(CAN0IDMR3, 0xFFU);
/* CAN0IDMR4: AM7=1,AM6=1,AM5=1,AM4=1,AM3=1,AM2=1,AM1=1,AM0=1 */
setReg8(CAN0IDMR4, 0xFFU);
/* CAN0IDMR5: AM7=1,AM6=1,AM5=1,AM4=1,AM3=1,AM2=1,AM1=1,AM0=1 */
setReg8(CAN0IDMR5, 0xFFU);
/* CAN0IDMR6: AM7=1,AM6=1,AM5=1,AM4=1,AM3=1,AM2=1,AM1=1,AM0=1 */
setReg8(CAN0IDMR6, 0xFFU);
/* CAN0IDMR7: AM7=1,AM6=1,AM5=1,AM4=1,AM3=1,AM2=1,AM1=1,AM0=1 */
setReg8(CAN0IDMR7, 0xFFU);
/* CAN0CTL0: INITRQ=0 */
clrReg8Bits(CAN0CTL0, 0x01U);
while(CAN0CTL1_INITAK) { /* Wait for init exit */
}
/* CAN0CTL0: RXFRM=0,RXACT=0,CSWAI=0,SYNCH=0,TIME=0,WUPE=0,SLPRQ=0,INITRQ=0 */
setReg8(CAN0CTL0, 0x00U);
/* CAN0RIER: WUPIE=0,CSCIE=0,RSTATE1=0,RSTATE0=0,TSTATE1=0,TSTATE0=0,OVRIE=0,RXFIE=1 */
setReg8(CAN0RIER, 0x01U);
/* CAN0TIER: ??=0,??=0,??=0,??=0,??=0,TXEIE2=0,TXEIE1=0,TXEIE0=0 */
setReg8(CAN0TIER, 0x00U);
}
|
|