OpenEdv-开源电子网

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

利用同一定时器的不同捕获通道方波测出相位差,这段程序只有时间差相位差在主函数完成

[复制链接]

2

主题

10

帖子

0

精华

新手上路

积分
40
金钱
40
注册时间
2015-5-9
在线时间
0 小时
发表于 2015-8-2 11:16:25 | 显示全部楼层 |阅读模式
5金钱


求助大神,我想通过捕获实验测出相位差,捕获通道1实验测量周期,捕获通道二想在通道一测到上升沿以后当通道二测到上升沿时记录此时通道一中的值即为时间差,但是测到的周期正确,时间差完全不对,求帮助

两路PWM输入捕获123.zip

3.66 MB, 下载次数: 1311

最佳答案

查看完整内容[请看2#楼]

这是我曾经找到的一个程序,楼主可以参考一下
给自己的未来留下一个planB,但是不要给现在留下一个planB。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

4

主题

58

帖子

0

精华

初级会员

Rank: 2

积分
161
金钱
161
注册时间
2015-7-31
在线时间
19 小时
发表于 2015-8-2 11:16:26 | 显示全部楼层
这是我曾经找到的一个程序,楼主可以参考一下

UCGUI_bisai.rar

4.94 MB, 下载次数: 2123

本人深山苦练20余年,一天只睡4小时,可连续编程100小时不休息,上至带项目、出方案,下至盗账号,学校不支持编程已辍学,家人不支持编程已断绝关系,老婆不支持编程已离婚,小孩不支持编程已送孤儿院,备用电源万兆光纤永不断电断网,门口已埋雷无人打扰
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-8-2 23:19:52 | 显示全部楼层
帮顶。。。。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

2

主题

10

帖子

0

精华

新手上路

积分
40
金钱
40
注册时间
2015-5-9
在线时间
0 小时
 楼主| 发表于 2015-8-3 09:09:36 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
老大求助!!!
给自己的未来留下一个planB,但是不要给现在留下一个planB。
回复

使用道具 举报

4

主题

58

帖子

0

精华

初级会员

Rank: 2

积分
161
金钱
161
注册时间
2015-7-31
在线时间
19 小时
发表于 2015-8-3 21:47:27 | 显示全部楼层
回复【4楼】中二电子测控汪:
---------------------------------
为什么我的头像不可以动。。。。。怨念
本人深山苦练20余年,一天只睡4小时,可连续编程100小时不休息,上至带项目、出方案,下至盗账号,学校不支持编程已辍学,家人不支持编程已断绝关系,老婆不支持编程已离婚,小孩不支持编程已送孤儿院,备用电源万兆光纤永不断电断网,门口已埋雷无人打扰
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-8-3 22:30:46 | 显示全部楼层
回复【5楼】中二电子测控汪:
---------------------------------
因为你的就一张图。。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

2

主题

10

帖子

0

精华

新手上路

积分
40
金钱
40
注册时间
2015-5-9
在线时间
0 小时
 楼主| 发表于 2015-8-3 23:21:17 | 显示全部楼层
回复【6楼】正点原子:
---------------------------------
原子哥我附上了代码,有时间帮我看下吧。。
给自己的未来留下一个planB,但是不要给现在留下一个planB。
回复

使用道具 举报

2

主题

10

帖子

0

精华

新手上路

积分
40
金钱
40
注册时间
2015-5-9
在线时间
0 小时
 楼主| 发表于 2015-8-3 23:22:44 | 显示全部楼层
回复【4楼】中二电子测控汪:
---------------------------------
我最开始也找到个这个,但是他里面全是用的寄存器写的,看起好头疼,
给自己的未来留下一个planB,但是不要给现在留下一个planB。
回复

使用道具 举报

3

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
61
金钱
61
注册时间
2015-7-22
在线时间
2 小时
发表于 2015-8-4 08:57:29 | 显示全部楼层
测周期不是一路捕获就可以了吗?
你要知道别人已经很优秀却还那么努力,你凭什么停下你的脚步去骄傲。。。。。。
回复

使用道具 举报

2

主题

10

帖子

0

精华

新手上路

积分
40
金钱
40
注册时间
2015-5-9
在线时间
0 小时
 楼主| 发表于 2015-8-4 09:04:04 | 显示全部楼层
回复【9楼】32探索者:
---------------------------------
但是还需要测两路方波的相位差啊
给自己的未来留下一个planB,但是不要给现在留下一个planB。
回复

使用道具 举报

3

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
61
金钱
61
注册时间
2015-7-22
在线时间
2 小时
发表于 2015-8-7 09:21:54 | 显示全部楼层
回复【10楼】冰魄梅魂:
---------------------------------
哦哦哦,明白了。
你要知道别人已经很优秀却还那么努力,你凭什么停下你的脚步去骄傲。。。。。。
回复

使用道具 举报

3

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
61
金钱
61
注册时间
2015-7-22
在线时间
2 小时
发表于 2015-8-7 09:22:27 | 显示全部楼层
void TIM2_IRQHandler(void)


  if((TIM2CH1_CAPTURE_STA&0X80)==0)//还未成功捕获
{   
if (TIM_GetITStatus(TIM2, TIM_IT_Update) != RESET)
 
{     
if(TIM2CH1_CAPTURE_STA&0X40)//已经捕获到高电平了
{
if((TIM2CH1_CAPTURE_STA&0X3F)==0X3F)//高电平太长了
{
TIM2CH1_CAPTURE_STA|=0X80;//标记成功捕获了一次
TIM2CH1_CAPTURE_VAL=0XFFFF;
}else TIM2CH1_CAPTURE_STA++;
}  
}
if (TIM_GetITStatus(TIM2, TIM_IT_CC1) != RESET)//捕获1发生捕获事件
{
if(TIM2CH1_CAPTURE_STA&0X40) //捕获到一个下降沿 
{  
TIM2CH1_CAPTURE_STA=TIM2CH1_CAPTURE_STA&0Xbf;
num_rise++;
HVAL=TIM_GetCapture1(TIM2);
HTIME=TIM2CH1_CAPTURE_STA&0X3f;
    TIM_OC1PolarityConfig(TIM2,TIM_ICPolarity_Rising); //CC1P=0 设置为上升沿捕获
}else   //还未开始,第一次捕获上升沿
{
if(num_rise==0){
TIM2CH1_CAPTURE_STA=0; //清空
TIM2CH1_CAPTURE_VAL=0;
  TIM_SetCounter(TIM2,0);
TIM2CH1_CAPTURE_STA|=0X40; //标记捕获到了上升沿
    TIM_OC1PolarityConfig(TIM2,TIM_ICPolarity_Falling); //CC1P=1 设置为下降沿捕获
}
if(num_rise==1)
{
num_rise=0;//为下次测量做准备
TIM2CH1_CAPTURE_STA|=0X80;//周期捕获成功
TIM2CH1_CAPTURE_VAL=TIM_GetCapture1(TIM2);
}

}     
}               
  }
 
    TIM_ClearITPendingBit(TIM2, TIM_IT_CC1|TIM_IT_Update); //清除中断标志位
 
}
这是中断服务函数,在这边我捕获一个上升沿和一个下降沿来捕获高电平时间,然后再捕获一个上升沿来捕获周期时间,但是我这样好像只能同时测一个范围内的频率和占空比。。。。求解答!!!这个问题能不能帮我解答一下啊?
你要知道别人已经很优秀却还那么努力,你凭什么停下你的脚步去骄傲。。。。。。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-18 19:16

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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