| 
 
| 程序配置如下: 1、时钟配置,外部晶振12MHZ:
 void Clock_Init(void)
 {
 CPMUOSC = 0x80;     // 使能外部晶振
 CPMUSYNR = 0x58;    /* VCOFRQ=0, SYNDIV=24 */
 CPMUREFDIV = 0x0b;  /* REFFRQ=1, REFDIV=9 */
 CPMUPOSTDIV = 0x00; /* POSTDIV=0 fpll=fvco=50M*/
 while(CPMU标志寄存器_LOCK == 0);
 CPMUCLKS = 0x80;    /* fbus=fpll*0.5, RTI & COP running from IRCCLK */
 
 }
 2、看门狗配置:
 void EnableCOP(void) {
 
 //CPMUCOP=0x01;  //1.3ms
 //CPMUCOP=0x02;  //5.4ms
 CPMUCOP=0x03;  //22.2ms
 
 
 }
 
 void FeedWatchDog(void)
 {
 //喂看门狗
 CPMUARMCOP = 0x55;
 CPMUARMCOP = 0xAA;
 }
 3主程序:
 void main(void) {
 /* put your own code here */
 
 Clock_Init();  //总线时钟25MHZ
 //  capture_init();
 SCIInit();
 EnableCOP(); //启动看门狗功能
 // flagx=flagy=i=j=0;
 
 EnableInterrupts;
 
 FeedWatchDog();
 
 SCIsend1(0x11);
 SCIsend1(0x22);
 FeedWatchDog();
 
 for(;;) {
 
 }
 程序设计逻辑:
 上电后串口发出11、22;待看门狗溢出后导致单片机复位,串口再次发出11、22,如此循环。
 实际测试情况:
 上电后串口发出11、22;待到看门狗溢出时间后,单片机死机,
 分析:
 查看寄存器:0x0037 CPMU标志寄存器寄存器对应位UPOSC报故障。
 
 以上情况,麻烦各位看一下,是什么原因造成?是寄存器没配置吗?有没有相关配置历程,谢谢!
 | 
 |