|
今天测试了一段代码,在主程序中开启看门狗,蜂鸣器快速报警几声之后,进入while循环,在大循环中不断喂狗,定时器中开启关断蜂鸣器,蜂鸣器较之前变慢。上电后,运行正常。但加入较强的电磁干扰后,程序出现死机,一直未复位。我用的单片机是飞思卡尔的MC9S12XHY128,程序如下:
- void main(void)
- {
- unsigned int cnt=0,i=0;
- CPMU_PEE_32MHz();
-
- COPCTL_WCOP=0; // 开启看门狗
- COPCTL_RSBCK=0;
- COPCTL_CR=7;
- DDRP_DDRP0=1; //蜂鸣器IO口设为输出模式
- BUZZ=1;
- Delay(50000);
- BUZZ=0;
- Delay(50000);
- BUZZ=1;
- Delay(50000);
- BUZZ=0;
- Delay(50000);
- BUZZ=1;
- Delay(50000);
- BUZZ=0;
- Delay(50000);
-
- Time_Config();
- EnableInterrupts;
- for(;;)
- {
-
- _FEED_COP(); //喂狗指令
-
- }
- }
- interrupt 42 void timer1_2_ISR(void) // 50ms 中断
- {
- word Counter_Value;
- static char CNT=0;
- TIM1_TFLG1_C2F=1; //Clear channel 2 flag
- TIM1_TC2 = (word)(Counter_Value + 50000);
- if(CNT>=15) // 750ms 定时到
- {
- BUZZ=!BUZZ;
- CNT=0;
-
- }
-
- }
复制代码 |
|