初级会员

- 积分
- 185
- 金钱
- 185
- 注册时间
- 2017-6-19
- 在线时间
- 90 小时
|
5金钱
如题,定时器中断服务函数怎么进入和退出。代码如下,现象是LED0以延时delay_ms(200)闪烁;LED1以定时器的时间500ms闪烁。似乎是定时器3只要初始化了就一直运行,假如我想要LED1闪烁一会就关闭,譬如闪烁五次就停掉,怎么关,貌似没有关闭的函数,求解~- int main(void)
- {
- vu8 key=0;
- delay_init(); //延时函数初始化
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
- uart_init(115200); //串口初始化为115200
- LED_Init(); //LED端口初始化
- TIM3_Int_Init(4999,7199);//10Khz的计数频率,计数到5000为500ms
- while(1)
- {
- LED0=~LED0;
- delay_ms(200);
- }
- }
- //定时器3中断服务程序
- void TIM3_IRQHandler(void) //TIM3中断
- {
- if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET) //检查TIM3更新中断发生与否
- {
- TIM_ClearITPendingBit(TIM3, TIM_IT_Update ); //清除TIMx更新中断标志
- LED1=!LED1;
- }
- }
复制代码
|
最佳答案
查看完整内容[请看2#楼]
设置标志位CNT,每中断一次CNT+1,如果你想停止5次停止,那主函数判断CNT==5时,失能定时器不就行了吗?你定时器初始化不是有使能定时器函数吗
(TIM_Cmd(TIM3, ENABLE); //使能TIMx ),失能TIM_Cmd(TIM3, DISABLE); //失能TIMx
|