初级会员

- 积分
- 52
- 金钱
- 52
- 注册时间
- 2015-10-2
- 在线时间
- 3 小时
|
看了好久都没理解,看了原子哥的视频有点懂了,手册后面看了有点乱
执行过程:由于本次试验里用到了定时器捕捉,那么要考虑两种中断,捕获中断和定时器溢出中断
1、当进入的是中断,先判断上次捕获是否处理结束,处理结束后,主函数会设置STA第七位为0
if((TIM2CH1_CAPTURE_STA&0X80)==0)说明上次捕捉处理结束或者未捕捉
满足则可以进入下一步
2、进入后判断是溢出中断还是捕获中断
if (TIM_GetITStatus(TIM2, TIM_IT_Update) != RESET)//是否溢出中断
if (TIM_GetITStatus(TIM2, TIM_IT_CC1) != RESET)//捕获1发生捕获事件
3、是溢出中断,判断是捕获前还是捕获后,
if(TIM2CH1_CAPTURE_STA&0X40)//已经捕获到高电平了
如果是捕获前溢出,那么这个没用,这几级判断直接退出,最外面消除中断标志位
如果是捕获后溢出,说明是捕获的高电平比较长
先判断捕获的高电平if((TIM2CH1_CAPTURE_STA&0X3F)==0X3F)//高电平太长了
高电平长到溢出的计数变量都满了,标记捕获成功一次,并设置定时器值到最大,
此时窗口显示的就不是准确的捕捉时长了,而是这个程序的计数最大值
如果没有太长,那么计数溢出一次STA++
4、是捕获中断
(1)是捕获下降沿:
那么此时一个高电平捕捉完成,标记捕捉到下降沿,捕捉完成记录下此时的定时器值,再设置回上升沿捕捉,以便下次捕捉
(2)是捕获上升沿:
那么此时是捕捉刚开始,先清空两个自定义计数器和定时器2计数器,标记捕获到上升沿,设置为下降沿捕获,等待下降沿来到
|
|