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

[复制链接]
3718|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 | 显示全部楼层
结贴:答案是不行。
hawksabre 发表于 2013-4-25 19:17 | 显示全部楼层
我晕  结贴这么快   客观的讲   定时器还是比较宝贵的   通过外部中断的方式实现   比较节省资源   这个毋庸置疑
liulx1206 发表于 2014-3-5 10:25 | 显示全部楼层
TIM_Period=0的时候不能发生up中断,必须从1开始,此时相当于脉冲分频为2(1+1)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

74

主题

2442

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部