OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 15510|回复: 62

输入捕获帮忙把思路理一下

[复制链接]

72

主题

251

帖子

0

精华

高级会员

Rank: 4

积分
597
金钱
597
注册时间
2012-3-29
在线时间
7 小时
发表于 2012-12-19 16:05:43 | 显示全部楼层 |阅读模式

//定时器5中断服务程序 
void TIM5_IRQHandler(void)
{

  if((TIM5CH1_CAPTURE_STA&0X80)==0)//还未成功捕获 
 {  
  if (TIM_GetITStatus(TIM5, TIM_IT_Update) != RESET)
  
  {    
   if(TIM5CH1_CAPTURE_STA&0X40)//已经捕获到高电平了
   {
    if((TIM5CH1_CAPTURE_STA&0X3F)==0X3F)//高电平太长了
    {
     TIM5CH1_CAPTURE_STA|=0X80;//标记成功捕获了一次
     TIM5CH1_CAPTURE_VAL=0XFFFF;
    }else TIM5CH1_CAPTURE_STA++;
   } 
  }
 if (TIM_GetITStatus(TIM5, TIM_IT_CC1) != RESET)//捕获1发生捕获事件
  { 
   if(TIM5CH1_CAPTURE_STA&0X40)  //捕获到一个下降沿   
   {      
    TIM5CH1_CAPTURE_STA|=0X80;  //标记成功捕获到一次上升沿
    TIM5CH1_CAPTURE_VAL=TIM_GetCapture1(TIM5);
       TIM_OC1PolarityConfig(TIM5,TIM_ICPolarity_Rising); //CC1P=0 设置为上升沿捕获
   }else          //还未开始,第一次捕获上升沿
   {
    TIM5CH1_CAPTURE_STA=0;   //清空
    TIM5CH1_CAPTURE_VAL=0;
     TIM_SetCounter(TIM5,0);
    TIM5CH1_CAPTURE_STA|=0X40;  //标记捕获到了上升沿
       TIM_OC1PolarityConfig(TIM5,TIM_ICPolarity_Falling);  //CC1P=1 设置为下降沿捕获
   }     
  }                    
  }
 
    TIM_ClearITPendingBit(TIM5, TIM_IT_CC1|TIM_IT_Update); //清除中断标志位
 
}


 

这一段代码的思路不太理解。原子大哥一笔带过了。

高电平太长为什么 TIM5CH1_CAPTURE_VAL=0XFFFF;

我理解就是在定时到了只捕获了高电平没有捕获到低电平。输入的捕获值为什么要等于0xffff?

 

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2012-12-19 18:34:40 | 显示全部楼层
if((TIM5CH1_CAPTURE_STA&0X3F)==0X3F)//高电平太长了
    {
     TIM5CH1_CAPTURE_STA|=0X80;//标记成功捕获了一次
     TIM5CH1_CAPTURE_VAL=0XFFFF;
    }
这个if,成立的条件很苛刻的,你可以自己算算,要多长的高电平,才会进入到这个里面来。
简单和你说个比喻吧,假设你最多只能吃4碗饭,那别人让你吃5碗饭的时候,你怎么处理?
这个if,就是判断,这个是不是第4碗饭了,如果是,就标记吃饱了,另外,备注一下我已经吃了4碗饭了,第五碗饭来的时候,直接拒绝之,这样,好过被撑死吧?
 
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

72

主题

251

帖子

0

精华

高级会员

Rank: 4

积分
597
金钱
597
注册时间
2012-3-29
在线时间
7 小时
 楼主| 发表于 2012-12-20 09:42:04 | 显示全部楼层

             谢谢回复,我再慢慢理解下

那难道溢出次数等于0X3F的时候TIM5CH1_CAPTURE_VAL就到极限0XFFFF了?这个是怎么来计算的

这个if..else..用的太牛了,不按先后来把后面的放前面。

象捕获事件发生应该是先捕获上升,再捕获下降。可是这个是先处理下降沿,再上升处理。思路让人一下子转不过来

TIM5_Cap_Init(0xffff,72-1);  这个频率1MHZ怎么计算来的?

 

回复 支持 反对

使用道具 举报

7

主题

69

帖子

0

精华

初级会员

Rank: 2

积分
117
金钱
117
注册时间
2013-4-6
在线时间
0 小时
发表于 2013-4-9 10:20:17 | 显示全部楼层

回复【2楼】正点原子:
---------------------------------
TIM5_Cap_Init(0xffff,72-1);  这个频率1MHZ怎么计算来的?
没仔细看书。。

回复 支持 反对

使用道具 举报

7

主题

69

帖子

0

精华

初级会员

Rank: 2

积分
117
金钱
117
注册时间
2013-4-6
在线时间
0 小时
发表于 2013-4-9 11:01:04 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
Vc=V0*(1-e^(-t/RC)) 按照这个充电公式,我们已知V0、t、R,如果要计算Cx,似乎还需要最后捕获时的电压值Vc,这个又是如何得知的呢?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2013-4-9 12:28:00 | 显示全部楼层
回复【5楼】chenyuedv:
---------------------------------
插STM32的手册得到。IO口电压最大为3.3V这是肯定的,然后你这里要查的就是高电平的最小值,这个在STM32的数据手册有写,VIH=2V。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2013-4-9 12:28:26 | 显示全部楼层
回复【4楼】chenyuedv:
---------------------------------
1Mhz就不解释了,自己看书吧。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

32

主题

195

帖子

2

精华

高级会员

Rank: 4

积分
646
金钱
646
注册时间
2013-7-23
在线时间
1 小时
发表于 2013-7-31 09:14:45 | 显示全部楼层
回复【7楼】正点原子:
---------------------------------
原子大哥,我也想问这个,为什么等于0x3F的时候就是高电平太长了,太长后把0xFFFF给TIM5CH1_CAPTURE_VAL,不懂,思路不是很清楚。
回复 支持 反对

使用道具 举报

14

主题

168

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
497
金钱
497
注册时间
2013-4-1
在线时间
25 小时
发表于 2013-7-31 09:59:55 | 显示全部楼层
回复【8楼】pizhihui1993:
---------------------------------
因为原子哥设的是一个八位的标志变量,每来一次高低电平完整的脉冲,标记一次同时低六位的加一次,当低六位全部为1的时候,也就是高电平来的时间太长了,以至于这六位都不能去记录这个高电平脉冲,那么就强制性的标记已经捕获到了一次脉冲,而不管低电平是不是真的来了!
所以说原子哥的程序写的真的是很严谨,我最开始就没有考虑的这么全面,以至于出错了!同时在捕获在这一块,捕获参数的分频系数和重转载值得设置也是很重要的!
回复 支持 反对

使用道具 举报

32

主题

195

帖子

2

精华

高级会员

Rank: 4

积分
646
金钱
646
注册时间
2013-7-23
在线时间
1 小时
发表于 2013-7-31 12:20:10 | 显示全部楼层
回复【9楼】308709362:
---------------------------------
哈哈 ,谢谢啊,现在有点理解了。
回复 支持 反对

使用道具 举报

23

主题

60

帖子

0

精华

初级会员

Rank: 2

积分
173
金钱
173
注册时间
2013-10-8
在线时间
0 小时
发表于 2013-10-14 02:07:35 | 显示全部楼层
我也在这困住了
回复 支持 反对

使用道具 举报

0

主题

4

帖子

0

精华

新手入门

积分
24
金钱
24
注册时间
2014-4-3
在线时间
0 小时
发表于 2014-4-3 16:14:37 | 显示全部楼层
请问   if (TIM_GetITStatus(TIM5, TIM_IT_Update) != RESET)  这句啥意思?
回复 支持 反对

使用道具 举报

0

主题

4

帖子

0

精华

新手入门

积分
24
金钱
24
注册时间
2014-4-3
在线时间
0 小时
发表于 2014-4-3 16:49:48 | 显示全部楼层
我是不明白 TIM_IT_Update 这个所谓的TIM中断源是什么意思? 从程序上理解是当计数器溢出的时候这个标志位有变化,请问是吗??是不是像这种应该对应到寄存器
回复 支持 反对

使用道具 举报

0

主题

4

帖子

0

精华

新手入门

积分
24
金钱
24
注册时间
2014-4-3
在线时间
0 小时
发表于 2014-4-3 16:58:03 | 显示全部楼层
寄存器里面有一个  当产生更新事件时该位由硬件置1, 这里我就不明白什么是更新事件了,再往上倒时序,终于找到了在溢出的情况下 即发生所谓的溢出事件,也就是此位由零置1
回复 支持 反对

使用道具 举报

0

主题

4

帖子

0

精华

新手入门

积分
24
金钱
24
注册时间
2014-4-3
在线时间
0 小时
发表于 2014-4-3 17:00:20 | 显示全部楼层
反观我学习的整个过程,好像顺序不太对,应该是先将整个模式的时序什么的各种情况弄清楚再说,可是这样底层的东西都看了,虽然我现在明白这个了,以后这样学习还是效率很低的。。。。诶,我得理理思路
回复 支持 反对

使用道具 举报

4

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
56
金钱
56
注册时间
2014-5-2
在线时间
0 小时
发表于 2014-5-15 20:23:43 | 显示全部楼层
回复【2楼】正点原子:
---------------------------这个If成立的时间:(65536/1M )*64=4.19s,如果实际问题不需要的话,我个人觉得可以省的,不仅如此,还可以节省中断处理时间,原子大哥怎么看?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2014-5-16 02:24:07 | 显示全部楼层
回复【16楼】M4学习:
---------------------------------
是可以去掉。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

1

主题

7

帖子

0

精华

新手上路

积分
31
金钱
31
注册时间
2014-5-14
在线时间
0 小时
发表于 2014-5-22 09:20:09 | 显示全部楼层
我是初学者,想问下实验中发送的pwm波是80KHz(周期12.5us)为什么输入捕获的高电平远远大于发送的周期呢?各位大侠谁能帮着解解疑惑,谢了
回复 支持 反对

使用道具 举报

2

主题

9

帖子

0

精华

新手上路

积分
48
金钱
48
注册时间
2013-3-13
在线时间
3 小时
发表于 2014-6-24 23:12:50 | 显示全部楼层
回复【7楼】正点原子:
---------------------------------
请教一下原子哥,《输入捕获实验》main函数中计算高电平时间的一段程序:
                if(TIM5CH1_CAPTURE_STA&0X80)//成功捕获到了一次上升沿
{
temp=TIM5CH1_CAPTURE_STA&0X3F; //获取TIM5溢出的次数
temp*=65536;//溢出时间总和
temp+=TIM5CH1_CAPTURE_VAL;//得到总的高电平时间
printf("HIGH:%d us\r\n",temp);//打印总的高点平时间
TIM5CH1_CAPTURE_STA=0;//开启下一次捕获
}

temp*=65536;//溢出时间总和
这句话,为什么要*65536?
temp中存的是TIM5溢出的次数,而TIM5每溢出1次代表计时过了1us,那么溢出时间就应当为temp*1us才对啊,为什么要乘以65536,很不理解。

还有,TIM5中断函数中:
TIM5CH1_CAPTURE_VAL=TIM_GetCapture1(TIM5);
这句话的意思是获取定时器TIM5的值,它的单位就是TIM5的溢出周期1us吗?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2014-6-24 23:19:52 | 显示全部楼层
回复【19楼】burstonthewing:
---------------------------------
溢出1次代表65536us...
不是1us啊,大哥.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

2

主题

9

帖子

0

精华

新手上路

积分
48
金钱
48
注册时间
2013-3-13
在线时间
3 小时
发表于 2014-6-26 21:07:27 | 显示全部楼层
回复【20楼】正点原子:
---------------------------------
TIM5_Cap_Init(0XFFFF,72-1); //以1Mhz的频率计数  

根据下面的公式计算TIM5的中断溢出时间为:
Tout= ((arr+1)*(psc+1)/Tclk

中断溢出时间:
(1)(0XFFFF+1)*(72-1+1)/(72MHz)=1*72/(72MHz)=1us
(2)(65535+1)*(72-1+1)/(72MHz)=65536*72/(72MHz)=65536us

到底是(1)还是(2)呢?如果是(2),1MHz是怎么来的呢?

1MHz是指定时器的时钟频率吗?如果是,它的计算方法是不是由下面得来的?

首先,
TIM_Cmd(TIM5,ENABLE );  //使能定时器5
这句话设置TIM5的时钟源为内部时钟源CK_INT

那么,由公式计数器的时钟频率 CK_CNT = fCK_PSC/(PSC[15:0]+1)
即:72MHz/(72-1+1)=1MHz

这么理解对不对啊?

计数器的时钟频率、定时器的时钟源频率、定时器的中断溢出时间不是一个概念对吧?
对应这个例子,其值分别为72MHz、1MHz、65536us,是不是呢?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2014-6-26 23:00:55 | 显示全部楼层
0XFFFF就等于65535,我不知道为什么两个相同的公式,算出来效果差这么远....
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

2

主题

9

帖子

0

精华

新手上路

积分
48
金钱
48
注册时间
2013-3-13
在线时间
3 小时
发表于 2014-6-27 00:12:16 | 显示全部楼层
回复【22楼】正点原子:
---------------------------------
回复【22楼】正点原子:
-----------------------------
谢谢原子哥的回答,麻烦再帮我看看下面的问题:

1MHz是指计数器的时钟频率吗?我按照下面的方法计算得来,不知道理解的正确不? 

首先, 
TIM_Cmd(TIM5,ENABLE );  //使能定时器5 
这句话设置TIM5的时钟源为内部时钟源CK_INT 

那么,由公式计数器的时钟频率 CK_CNT = fCK_PSC/(PSC[15:0]+1) 
即:72MHz/(72-1+1)=1MHz 

另外,计数器的时钟频率、定时器的时钟源频率、定时器的中断溢出时间不是一个概念对吧?
对应这个例子,其值分别为72MHz、1MHz、65536us,是不是呢?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2014-6-27 23:27:16 | 显示全部楼层
回复【23楼】burstonthewing:
---------------------------------
1Mhz是指定时器的技术频率,也就是TIMx->CNT的加速度,是1Mhz,1秒钟加1000 000次.
所以溢出时间就是:0.000 001*65536 s
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

1

主题

30

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
266
金钱
266
注册时间
2014-7-5
在线时间
43 小时
发表于 2014-7-15 15:57:22 | 显示全部楼层
mark一下!
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
21
金钱
21
注册时间
2014-7-8
在线时间
0 小时
发表于 2014-7-15 17:50:35 | 显示全部楼层
不错,受教了
已有的事,后必再有;已行的事,后必再行。
回复 支持 反对

使用道具 举报

1

主题

3

帖子

0

精华

新手入门

积分
27
金钱
27
注册时间
2014-7-18
在线时间
0 小时
发表于 2014-7-24 16:07:57 | 显示全部楼层
原子大哥,你是用按键来输入高电平,但是按键没有按下的时候真的就是低电平吗?

我拿万用表打了一下,未对I/O口采取任何措施时电平只有0.00几V
回复 支持 反对

使用道具 举报

1

主题

3

帖子

0

精华

新手入门

积分
27
金钱
27
注册时间
2014-7-18
在线时间
0 小时
发表于 2014-7-24 16:12:43 | 显示全部楼层
我是仿照您的思路,PC0口通过开关接地,软件将其设置为上拉输入,检测高电平的宽度,但是根本不会产生捕获,我猜测就是常态时不是高电平,导致没有产生下降沿,,请懂的朋友帮忙解释下,谢谢!
回复 支持 反对

使用道具 举报

19

主题

118

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
214
金钱
214
注册时间
2013-12-2
在线时间
0 小时
发表于 2014-8-1 09:09:52 | 显示全部楼层
回复【28楼】苹子love球球:
---------------------------------
我没记错的话,例程中用的是wk_up是高电平有效,即常态式低电平。。
你要是想问原子哥 你得点击原子哥的回复后 他才能看到
回复 支持 反对

使用道具 举报

0

主题

13

帖子

0

精华

新手上路

积分
33
金钱
33
注册时间
2014-8-14
在线时间
0 小时
发表于 2014-8-18 18:13:02 | 显示全部楼层
mark
回复 支持 反对

使用道具 举报

5

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
93
金钱
93
注册时间
2014-9-3
在线时间
2 小时
发表于 2014-9-27 22:01:08 | 显示全部楼层
原子大哥最后一句CC1P=1 设置为下降沿捕获是什么意思,为什么要这样?还有就是else里面的标志位与值为什么都要清零?

回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2014-9-27 22:55:46 | 显示全部楼层
回复【31楼】冬迹:
---------------------------------
你要捕获高电平脉宽,既然捕获到了上升沿,那么你下一次期望捕获什么边沿?
清零是为后面的计算做准备。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

5

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
93
金钱
93
注册时间
2014-9-3
在线时间
2 小时
发表于 2014-9-28 00:05:51 | 显示全部楼层
[mw_shl_code=c,true]if (TIM_GetITStatus(TIM5, TIM_IT_CC1) != RESET)//捕获1发生捕获事件 { if(TIM5CH1_CAPTURE_STA&0X40) //捕获到一个下降沿 { TIM5CH1_CAPTURE_STA|=0X80; //标记成功捕获到一次上升沿 TIM5CH1_CAPTURE_VAL=TIM_GetCapture1(TIM5); TIM_OC1PolarityConfig(TIM5,TIM_ICPolarity_Rising); //CC1P=0 设置为上升沿捕获 }else //还未开始,第一次捕获上升沿 { TIM5CH1_CAPTURE_STA=0; //清空 TIM5CH1_CAPTURE_VAL=0; TIM_SetCounter(TIM5,0); TIM5CH1_CAPTURE_STA|=0X40; //标记捕获到了上升沿 TIM_OC1PolarityConfig(TIM5,TIM_ICPolarity_Falling); //CC1P=1 设置为下降沿捕获 } } } TIM_ClearITPendingBit(TIM5, TIM_IT_CC1|TIM_IT_Update); //清除中断标志位[/mw_shl_code]
[mw_shl_code=c,true] [mw_shl_code=c,true]if(TIM5CH1_CAPTURE_STA&0X40) //捕获到一个下降沿 [mw_shl_code=c,true]可是这里既然已经判断捕获了下降沿,TIM_OC1PolarityConfig(TIM5,TIM_ICPolarity_Falling); //CC1P=1 设置为下降沿捕[/mw_shl_code] [/mw_shl_code] [mw_shl_code=c,true]那么这里为什么还要设置为下降沿捕获呢?[/mw_shl_code] [/mw_shl_code]
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2014-9-28 23:56:08 | 显示全部楼层
回复【33楼】冬迹:
---------------------------------
你可以按你自己的思路写代码。

然后测试下。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

5

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
53
金钱
53
注册时间
2014-9-29
在线时间
0 小时
发表于 2014-10-4 19:15:55 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
原子哥,想问一下,它最 开始的允许更新中断有什么用,我理解的是,定时器计数到一定时间,产生高电平(上升沿或者下降沿?)还有,把允许中断发生事件和发生捕获事件换位置行不
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2014-10-4 23:10:20 | 显示全部楼层
回复【35楼】疾风迅雷zzc:
---------------------------------
试试
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

5

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
53
金钱
53
注册时间
2014-9-29
在线时间
0 小时
发表于 2014-10-5 09:57:09 | 显示全部楼层
回复【36楼】正点原子:
---------------------------------
调换位置后可以啊,原子哥,我还是想问问允许更新中断有什么用,我觉得我开始理解的不对,更新中断是产生溢出,溢 出越多,高电平时间越久,是不是啊
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2014-10-5 23:15:00 | 显示全部楼层
回复【37楼】疾风迅雷zzc:
---------------------------------
就是可以进入溢出中断。
当然是越多越长。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

6

主题

35

帖子

0

精华

初级会员

Rank: 2

积分
122
金钱
122
注册时间
2014-5-27
在线时间
9 小时
发表于 2015-1-15 22:37:02 | 显示全部楼层
回复【16楼】M4学习:
---------------------------------
中断函数中的哪个if?
回复 支持 反对

使用道具 举报

6

主题

35

帖子

0

精华

初级会员

Rank: 2

积分
122
金钱
122
注册时间
2014-5-27
在线时间
9 小时
发表于 2015-1-15 23:07:03 | 显示全部楼层
回复【16楼】M4学习:
---------------------------------
(65536/1M )*64=4.19s,这个公式是指哪个IF的判断时间。公式具体是怎么来的啊?还请朋友解答一下
回复 支持 反对

使用道具 举报

5

主题

38

帖子

0

精华

初级会员

Rank: 2

积分
133
金钱
133
注册时间
2015-1-18
在线时间
17 小时
发表于 2015-1-18 20:40:29 | 显示全部楼层
回复【21楼】burstonthewing:
---------------------------------
中断溢出时间: 
(1)(0XFFFF+1)*(72-1+1)/(72MHz)=1*72/(72MHz)=1us 
(2)(65535+1)*(72-1+1)/(72MHz)=65536*72/(72MHz)=65536us 


***********************************************************
65535+1 = 0,溢出了   ,  0在*任何都等于0啊???
回复 支持 反对

使用道具 举报

2

主题

35

帖子

0

精华

初级会员

Rank: 2

积分
71
金钱
71
注册时间
2014-12-7
在线时间
3 小时
发表于 2015-1-23 15:42:51 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
原子哥,我看库函数版本教材,有个问题
问题:TIM5CH1_CAPTURE_STA=0  这一句把TIM5CH1_CAPTURE_STA赋0了,那么在往下判断时哪一个条件也进不去啊????
是不是还有什么语句是让TIM5CH1_CAPTURE_STA获得值的,但没找到啊????

回复 支持 反对

使用道具 举报

2

主题

35

帖子

0

精华

初级会员

Rank: 2

积分
71
金钱
71
注册时间
2014-12-7
在线时间
3 小时
发表于 2015-1-23 16:05:14 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
明白了,原子哥,写的程序太赞了
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2015-1-23 23:15:05 | 显示全部楼层
回复【43楼】注册个号来学习:
---------------------------------
谢谢
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

江洋之道 该用户已被删除
发表于 2015-4-15 11:08:04 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

江洋之道 该用户已被删除
发表于 2015-4-15 16:58:26 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2015-4-15 22:51:50 | 显示全部楼层
回复【46楼】江洋之道:
---------------------------------
1,请自己测试。
2,对。
如果有问题,就要去分析为什么了。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

2

主题

6

帖子

0

精华

新手上路

积分
34
金钱
34
注册时间
2015-1-29
在线时间
0 小时
发表于 2015-4-16 00:49:57 | 显示全部楼层
回复【21楼】burstonthewing:
---------------------------------
回复【21楼】burstonthewing:
---------------------------------
第二个公式对
计数器的时钟频率、定时器的时钟源频率、定时器的中断溢出时间不是一个概念
对应这个例子,其值分别为CNT(也就是分频后)1MHz、PSC=INT(也就是分频前,使用的是内部APB1倍频后)72MHz、65536us(以1M的频率从0加到65535)
回复 支持 反对

使用道具 举报

江洋之道 该用户已被删除
发表于 2015-4-16 11:33:42 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

26

主题

62

帖子

0

精华

初级会员

Rank: 2

积分
184
金钱
184
注册时间
2015-5-16
在线时间
0 小时
发表于 2015-5-21 21:13:40 | 显示全部楼层
回复【47楼】正点原子:
---------------------------------
原子哥,这里的捕获事件和更新中断有没有关系啊?我不太理解这里的更新中断到底是怎么产生的
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-1 02:04

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表