新手入门
- 积分
- 19
- 金钱
- 19
- 注册时间
- 2017-7-17
- 在线时间
- 4 小时
|

楼主 |
发表于 2017-8-27 01:05:31
|
显示全部楼层
本帖最后由 TimEagleZhao 于 2017-8-27 01:21 编辑
想顺便请教:
TIM_ITConfig(TIM3,TIM_IT_Update,DISABLE); 开关定时器的时候这个东西的enable和disable有什么所谓吗?还是只需要用TIM_Cmd函数使能/禁用那个timer就好了?
我发现如果直接在初始化的时候用TIM_ITConfig使能中断更新,而在后面只enable disable那个TIM_Cmd函数的话,reset之后也会莫名其妙地不用按键就会先触发一次定时器中断,然后就一切正常
像这样:
void EXTI4_IRQHandler(void){
delay_ms(10);
if(SW3) //判断中断来源,确定是switch3
{
BUZZER=1; //打开蜂鸣器
TIM3->ARR=3000; //设置timer时长,arr=3000是300ms
//TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE); //使能timer的中断触发
TIM_Cmd(TIM3,ENABLE); //使能timer
}
EXTI_ClearITPendingBit(EXTI_Line4); //清理标志位
}
void TIM3_IRQHandler(void)
{
if(TIM_GetITStatus(TIM3,TIM_IT_Update)==SET) //判断中断类型
{
BUZZER=0; //关闭蜂鸣器
LED1=0; delay_ms(100); LED1=1; //闪一下LED
TIM_Cmd(TIM3,DISABLE); //关闭timer
//TIM_ITConfig(TIM3,TIM_IT_Update,DISABLE); //关闭timer的触发
}
TIM_ClearITPendingBit(TIM3,TIM_IT_Update); //清理标志位
}
然后初始化的时候enable它
|
|