打印

我希望每个外部输入脉冲发生一次中断,TIM_Period = 0可以不?

[复制链接]
2699|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
dld2|  楼主 | 2013-4-8 15:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
TIM_DeInit(TIM4);

TIM_TIxExternalClockConfig(TIM4, TIM_TIxExternalCLK1Source_TI2, TIM_ICPolarity_Rising, 0);

TIM_TimeBaseStructure.TIM_Period = 0;                        //计数值. 即自动加载值ARR   
TIM_TimeBaseStructure.TIM_Prescaler = 0;            //预分频,此值+1为分频的除数
TIM_TimeBaseStructure.TIM_ClockDivision = 0x0;          //
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;         //向上计数       
TIM_TimeBaseInit(TIM4, &TIM_TimeBaseStructure);
       
TIM_ClearFlag(TIM4, TIM_FLAG_Update);          //清除溢出中断标志
       
TIM_ARRPreloadConfig(TIM4, DISABLE);         //禁止ARR预装载缓冲器
            
TIM_ITConfig(TIM4,TIM_IT_Update,ENABLE);     //开启中断
       
//开启定时器4        
TIM_Cmd(TIM4,ENABLE);

沙发
airwill| | 2013-4-8 16:20 | 只看该作者
应该是可以的.
不过好浪费呀, 用 IO 口外部中断就可以了, 还废了一个定时器.

使用特权

评论回复
板凳
dld2|  楼主 | 2013-4-8 16:38 | 只看该作者
airwill 发表于 2013-4-8 16:20
应该是可以的.
不过好浪费呀, 用 IO 口外部中断就可以了, 还废了一个定时器. ...

主要是多少个脉冲发生一次中断需要可配置的。有可能一个,也有可能10000个。

使用特权

评论回复
地板
dld2|  楼主 | 2013-4-25 18:40 | 只看该作者
结贴:答案是不行。

使用特权

评论回复
5
hawksabre| | 2013-4-25 19:17 | 只看该作者
我晕  结贴这么快   客观的讲   定时器还是比较宝贵的   通过外部中断的方式实现   比较节省资源   这个毋庸置疑

使用特权

评论回复
6
liulx1206| | 2014-3-5 10:25 | 只看该作者
TIM_Period=0的时候不能发生up中断,必须从1开始,此时相当于脉冲分频为2(1+1)

使用特权

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

本版积分规则

74

主题

2442

帖子

3

粉丝