打印
[STM32F1]

请教 TIM通用定时器 ENDABLE后不能清中断标志

[复制链接]
1403|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
57tm|  楼主 | 2014-8-5 09:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
TIM_Cmd(TIM3, ENABLE);               
TIM_ClearITPendingBit(TIM3, TIM_IT_Update);       

TIM_Cmd(TIM3, DISABLE);               
TIM_ClearITPendingBit(TIM3, TIM_IT_Update);       

如上语句第一条ENALBE后 清除溢出中断位就会失效

DISABLE后则有效  这个位只配置为溢出中断标志啊  配置URS UDIS也是如此  这样会在程序中多进一次中断导致通信错误后的显示错误 请教
       
沙发
airwill| | 2014-8-5 10:55 | 只看该作者
TIM_Cmd(TIM3, ENABLE);               
TIM_ClearITPendingBit(TIM3, TIM_IT_Update);        

这样处理是合理的. 如果 DISABLE, 那么定时器就没有开启, 不能正常工作

使用特权

评论回复
板凳
mmuuss586| | 2014-8-5 12:42 | 只看该作者
ENABLE后,仿真能进入中断程序吗?

使用特权

评论回复
地板
57tm|  楼主 | 2014-8-5 16:12 | 只看该作者
enalbe后可以 进入中断  

TIM_Cmd(TIM3, ENABLE);               
TIM_ClearITPendingBit(TIM3, TIM_IT_Update);        

这样处理是合理的. 如果 DISABLE, 那么定时器就没有开启, 不能正常工作


、、------------------------------------------------------------------------------------------------------
问题是 ENABLE的同时 置位了一个溢出中断UIF   先进了一次中断  这样会造成错误  如果这样合理  那么为什么EABLE就要置位UIF呢

使用特权

评论回复
5
香水城| | 2014-8-5 16:42 | 只看该作者
你之前通过参数“TIM_PSCReloadMode_Immediate”来调用过TIM_PrescalerConfig()来配置TIM的time base的分配器么?

这样会软件置位UG位,会立马产生一个update中断

使用特权

评论回复
6
57tm|  楼主 | 2014-8-5 16:51 | 只看该作者
        TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct;                               

        RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3 , ENABLE);
        TIM_TimeBaseInitStruct.TIM_Period = 1000;                               
        TIM_TimeBaseInitStruct.TIM_Prescaler = (720 - 1);
        TIM_TimeBaseInitStruct.TIM_CounterMode = TIM_CounterMode_Up;
        TIM_TimeBaseInit(TIM3, &TIM_TimeBaseInitStruct);                       
        TIM_GetITStatus(TIM3, TIM_IT_Update);
        TIM_ClearITPendingBit(TIM3, TIM_IT_Update);
        TIM_ITConfig(TIM3, TIM_IT_Update, ENABLE);

没有就是用库函数初始化的

使用特权

评论回复
7
57tm|  楼主 | 2014-8-5 16:59 | 只看该作者
那就是某种情况造成了香版说的情况吧  我再找找看

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

30

主题

79

帖子

2

粉丝