[求助] stm32中断函数问题

tzzhuang   2011-12-23 12:48 楼主

大家在写中断函数的时候是把开启中断语句放在设置中断优先级之前还是之后呢?为什么两种位置会有完全不同的结果?请指教。程序如下

void WWDG_Init(u8 tr,u8 wr,u8 fprer)
{        
 RCC->APB1ENR|=1<<11; //使能wwdg时钟
 WWDG_CNT=tr&WWDG_CNT;   //初始化WWDG_CNT.           
 WWDG->CFR|=fprer<<7;    //PCLK1/4096再除2^fprer
 WWDG->CFR&=0XFF80;    
 WWDG->CFR|=wr;      //设定窗口值    
 WWDG->CR|=WWDG_CNT|(1<<7); //开启看门狗,设置7位计数器            
 MY_NVIC_Init(2,3,WWDG_IRQChannel,2);//抢占2,子优先级3,组2   
WWDG->SR=0X00;//清除唤醒中断标志位

WWDG->CFR|=1<<9;        //使能提前唤醒中断

}

回复评论 (5)

啊啊,自己顶起。
点赞  2011-12-23 22:09
是不完全手册的例程吧,楼主放前放后有什么不同呢?我调试结果是一样的
点赞  2011-12-23 23:36

回复 板凳 shower.xu 的帖子

恩,是的。奇怪了,现在又正常了。刚开始烧修改后的例程(就是启动中断语句位置对调)时LED0一直亮,LED1不亮。
点赞  2011-12-24 00:04
注意窗口值一定要介于计数值和0x40之间,否则即使中断也不能刷新计数值来喂狗,会造成复位。
点赞  2011-12-24 08:24

回复 5楼 shower.xu 的帖子

恩,会注意的。多谢哦。
点赞  2011-12-24 15:21
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复