你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

端口脉冲计数

[复制链接]
飞翼我的心 提问时间:2017-1-18 09:11 /
悬赏50ST金币未解决
一个端口通过外部使其置高或置低效果类似方波脉冲(但不是持续的,有可能长时间都置低),怎么计数其脉冲个数以及判断其上升沿,比如说在TIM1定时器溢出中断里:
#pragma vector=TIM1_OVR_UIF_vector
__interrupt void TIM1_OVR_UIF_IRQHandler(void)
{
  TIM1_SR1=0X00;
  count13++;
  if(count13==3)                        //数3个脉冲后PD2置高
  PD2=1;                                       
  if(count13==6)                       //数3个脉冲后PD2置低
  PD2=0;
}
如何计数PD2端口的脉冲个数以及判断其上升沿.

收藏 1 评论19 发布时间:2017-1-18 09:11

举报

19个回答
jinglixixi 回答时间:2017-1-18 11:00:34
你对PD2的高或低直接计数即可,至于上升沿看PD2由0->1的变化即可。

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

飞翼我的心 回答时间:2017-1-18 11:13:49
jinglixixi 发表于 2017-1-18 11:00
你对PD2的高或低直接计数即可,至于上升沿看PD2由0->1的变化即可。

直接计数怎么做,需要开外部中断吗,我只知道通过中断可以计数脉冲个数
zoomdy 回答时间:2017-1-18 12:50:18
你是要输出脉冲?还是测量脉冲个数?

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

飞翼我的心 回答时间:2017-1-18 13:28:16
zoomdy 发表于 2017-1-18 12:50
你是要输出脉冲?还是测量脉冲个数?

测量脉冲个数还有判断下降沿
废鱼 回答时间:2017-1-18 13:34:56
外部中断上升沿触发来进行上升沿的计数。

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

飞翼我的心 回答时间:2017-1-18 14:09:10
安 发表于 2017-1-18 13:34
外部中断上升沿触发来进行上升沿的计数。

谢谢啦,还有如果这个脉冲不是持续的,可能PD2端口会突然长时间置低,会影响计数吗
anobodykey 回答时间:2017-1-18 14:20:39
楼上说的都挺对的,如果只检测上升沿的话就可以设置成外部中断为上升沿触发即可,在中断服务例程中计数即可。

评分

参与人数 2ST金币 +27 收起 理由
飞翼我的心 + 25
zero99 + 2

查看全部评分

飞翼我的心 回答时间:2017-1-18 14:24:46
anobodykey 发表于 2017-1-18 14:20
楼上说的都挺对的,如果只检测上升沿的话就可以设置成外部中断为上升沿触发即可,在中断服务例程中计数即可 ...

明白了,但是如果该脉冲不是持续恒定的,有可能PD2端口会突然长时间置低,影响计数吗
废鱼 回答时间:2017-1-18 14:42:56
如果长时间不变,是不会影响的计数的,只有上升沿发生时才会进入中断。楼主可以测试一下。

评分

参与人数 1ST金币 +25 收起 理由
飞翼我的心 + 25

查看全部评分

anobodykey 回答时间:2017-1-19 10:26:43
飞翼我的心 发表于 2017-1-18 14:24
明白了,但是如果该脉冲不是持续恒定的,有可能PD2端口会突然长时间置低,影响计数吗 ...

当然不影响了,你外部中断设置的是边沿触发而不是电平触发,所以不论你电平持续时间有多长都不影响
飞翼我的心 回答时间:2017-1-19 11:19:46
anobodykey 发表于 2017-1-19 10:26
当然不影响了,你外部中断设置的是边沿触发而不是电平触发,所以不论你电平持续时间有多长都不影响 ...

恩,还有个问题,PD2端口脉冲是在TIM1溢出中断里产生的,如果我再开外部中断,还需要设置中断优先级吗
jinglixixi 回答时间:2017-1-19 11:26:48
飞翼我的心 发表于 2017-1-18 11:13
直接计数怎么做,需要开外部中断吗,我只知道通过中断可以计数脉冲个数 ...

自然要开中断,然后在中断中判别计数及相应的判别处理如判别上升沿等。
直接计数好像不如单片机那样方便。
飞翼我的心 回答时间:2017-1-19 11:33:43
jinglixixi 发表于 2017-1-19 11:26
自然要开中断,然后在中断中判别计数及相应的判别处理如判别上升沿等。
直接计数好像不如单片机那样方便 ...

那不就是来一个脉冲进一次中断吗,我看网上说这样浪费资源,不是很懂
zbber 回答时间:2017-1-19 12:13:45
外部中断上升沿触发来进行上升沿的计数
12下一页

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版