- void main(void)
- {
- u8 i,n,sr;
-
- WTST = 0; //设置程序指令延时参数,赋值为0可将CPU执行指令的速度设置为最快
- EAXFR = 1; //扩展寄存器(XFR)访问使能
- CKCON = 0; //提高访问XRAM速度
-
- P0M1 = 0x00; P0M0 = 0x00; //设置为准双向口
- P1M1 = 0x00; P1M0 = 0x00; //设置为准双向口
- P2M1 = 0x00; P2M0 = 0x00; //设置为准双向口
- P3M1 = 0x00; P3M0 = 0x00; //设置为准双向口
- P4M1 = 0x00; P4M0 = 0x00; //设置为准双向口
- P5M1 = 0x00; P5M0 = 0x00; //设置为准双向口
- P6M1 = 0x00; P6M0 = 0x00; //设置为准双向口
- P7M1 = 0x00; P7M0 = 0x00; //设置为准双向口
-
- P24 = 0;
-
- CANInit();
复制代码
发现程序刚开始执行的初始化时间好像太长了,我用示波器监测P24,开发板上电后(P24 = 3.38V)变成0V的时间,发现大概需要340ms左右,而看门狗开启后,复位的程序会保留看门狗寄存器的内容,导致初始化还没跑完就立刻复位了,也就是KEIL提示的丢失目标。看门狗设置成128分频,系统时钟24M,复位时间大概2秒,KEIL下载程序就不会弹出目标丢失了。
但对看门狗还是很疑惑,复位后的程序是否还会保留看门狗的配置,我看手册描述的是所有寄存器都会变为初始值,可实际现象应该是没有清除看门狗的使能的,而且我复制的初始化代码为什么会执行那么长的时间,大家有测试过吗?请假一下,谢谢 |