程序配置如下:
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报故障。
以上情况,麻烦各位看一下,是什么原因造成?是寄存器没配置吗?有没有相关配置历程,谢谢! |