社区导航

 
快捷导航
  • 首页
  • 论坛
  • 查看新帖
  • 最新回复
  • 社区活动
  • 联系管理员
  • 消灭零回复
  • E金币兑换
  • 干货
搜索
查看: 866|回复: 11

[求助] stm8端口脉冲

[复制链接]

70

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2017-1-18 09:10:33 | 显示全部楼层 |阅读模式
一个端口通过外部使其置高或置低效果类似方波脉冲(但不是持续的,有可能长时间都置低),怎么计数其脉冲个数以及判断其上升沿,比如说在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端口的脉冲个数以及判断其上升沿.
此帖出自stm32/stm8论坛


回复

使用道具 举报

422

TA的帖子

2

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2017-1-18 09:44:59 | 显示全部楼层
输入捕捉,外部中断

点评

这是端口置高置低产生的脉冲怎么去输入捕获呢,再接到一个定时器通道上?  详情 回复 发表于 2017-1-18 09:47


回复

使用道具 举报

70

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2017-1-18 09:47:07 | 显示全部楼层
lyfly_away 发表于 2017-1-18 09:44
输入捕捉,外部中断

这是端口置高置低产生的脉冲怎么去输入捕获呢,再接到一个定时器通道上?


回复

使用道具 举报

47

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2017-1-18 13:56:05 | 显示全部楼层
LZ说的有点模糊,方波信号是外部输入还是单片机输出?单片机输出然后要计数的话再弄个全局变量计数不就行了?


回复

使用道具 举报

47

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2017-1-18 13:58:43 | 显示全部楼层
LZ说的有点模糊,脉冲式单片机输出还是外部输入?
单片机输出的话设个全局变量在翻转IO口的时候技术不就行了?
外部输入到单片机的话1楼说的两种都行

点评

其实就是一个io口通过对其置高置低类似于脉冲,就是在我发的程序上对PD2进行计数和判断其下降沿  详情 回复 发表于 2017-1-18 14:14


回复

使用道具 举报

70

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2017-1-18 14:14:12 | 显示全部楼层
ZHZ26 发表于 2017-1-18 13:58
LZ说的有点模糊,脉冲式单片机输出还是外部输入?
单片机输出的话设个全局变量在翻转IO口的时候技术不就行 ...

其实就是一个io口通过对其置高置低类似于脉冲,就是在我发的程序上对PD2进行计数和判断其下降沿

点评

再定义两个全局变量,一个进定时器中断时自加,一个在if(count13==6)里面自加,不就OK了? 另外你的count13变量应该在if(count13==6)的分支里面清0吧  详情 回复 发表于 2017-1-20 08:15


回复

使用道具 举报

981

TA的帖子

1

TA的资源

版主

Rank: 6Rank: 6

发表于 2017-1-18 16:10:52 | 显示全部楼层
定时器中断读取IO电平计数,中断时间间隔为你最小的脉冲时间

点评

本身这个脉冲就是PD2端口在tim1溢出中断里产生的,再用一个定时器中断读电平去计数  详情 回复 发表于 2017-1-18 16:54


回复

使用道具 举报

70

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2017-1-18 16:54:28 | 显示全部楼层
qwerghf 发表于 2017-1-18 16:10
定时器中断读取IO电平计数,中断时间间隔为你最小的脉冲时间

本身这个脉冲就是PD2端口在tim1溢出中断里产生的,再用一个定时器中断读电平去计数


回复

使用道具 举报

47

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2017-1-20 08:15:52 | 显示全部楼层
sang523 发表于 2017-1-18 14:14
其实就是一个io口通过对其置高置低类似于脉冲,就是在我发的程序上对PD2进行计数和判断其下降沿

再定义两个全局变量,一个进定时器中断时自加,一个在if(count13==6)里面自加,不就OK了?
另外你的count13变量应该在if(count13==6)的分支里面清0吧

点评

清零原程序有写的,但是这样怎么做到判断边沿极性  详情 回复 发表于 2017-1-20 08:26


回复

使用道具 举报

70

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2017-1-20 08:26:09 | 显示全部楼层
ZHZ26 发表于 2017-1-20 08:15
再定义两个全局变量,一个进定时器中断时自加,一个在if(count13==6)里面自加,不就OK了?
另外你的coun ...

清零原程序有写的,但是这样怎么做到判断边沿极性

点评

你的边沿极性有你的程序控制,运行“PD2=0;”时,PD2就输出下降沿,你在“PD2=0;”后加个计数语句:“num++;” 这样num的值不就是下降沿的次数? 建议count13清零在定时器中断中处理,避免下次进入定时器中断时,  详情 回复 发表于 2017-1-20 19:04


回复

使用道具 举报

47

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2017-1-20 19:04:04 | 显示全部楼层
sang523 发表于 2017-1-20 08:26
清零原程序有写的,但是这样怎么做到判断边沿极性

你的边沿极性有你的程序控制,运行“PD2=0;”时,PD2就输出下降沿,你在“PD2=0;”后加个计数语句:“num++;”
这样num的值不就是下降沿的次数?
建议count13清零在定时器中断中处理,避免下次进入定时器中断时,主程序还没运行到清零的语句

点评

恩,懂了,谢谢  详情 回复 发表于 2017-1-21 09:07


回复

使用道具 举报

70

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2017-1-21 09:07:56 | 显示全部楼层
ZHZ26 发表于 2017-1-20 19:04
你的边沿极性有你的程序控制,运行“PD2=0;”时,PD2就输出下降沿,你在“PD2=0;”后加个计数语句:“nu ...

恩,懂了,谢谢


回复

使用道具 举报

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

本版积分规则

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

小黑屋|手机版|Archiver|电子工程世界 ( 京ICP证 060456

GMT+8, 2018-4-26 17:37 , Processed in 0.334594 second(s), 18 queries , Redis On.

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