Tacking 发表于 2024-12-23 16:37

<div class='shownolgin' data-isdigest='yes'>maychang 发表于 2024-12-23 15:54
当年在另一个论坛,有位网友提出单片机的一个I/O口控制一个设备。但是该I/O口并不是联接到这个设备,而是 ...

<p>谢谢,我了解下倍压整流电路!</p>
</div><script>showreplylogin();</script><script type="text/javascript">(function(d,c){var a=d.createElement("script"),m=d.getElementsByTagName("script"),eewurl="//counter.eeworld.com.cn/pv/count/";a.src=eewurl+c;m.parentNode.insertBefore(a,m)})(document,523)</script>

Tacking 发表于 2024-12-23 16:41

<div class='shownolgin' data-isdigest='yes'>秦天qintian0303 发表于 2024-12-23 16:06
没有的时候就一直处于高电平状态,这个是外部电路的的状态吗?如果是的话其实可以用外部中断进行实时检测, ...

<p>没有的时候,我用逻辑分析仪抓了下波形,就是一直处于高电平状态!我现在就是想通过外部中断来监测,但是一直没能成功。一直没想明白需要怎么去判定一定周期没有来外部中断的方法。还请指导下需要怎么去判定到底有没有来中断?</p>

<p>我尝试了用库函数:EXTI_GetITStatus和EXTI_GetFlagStatus都不行。这些函数都必须在中断服务程序里执行,如果没有中断,中断服务程序是不会执行的。</p>
</div><script>showreplylogin();</script>

maychang 发表于 2024-12-23 17:03

<div class='shownolgin' data-isdigest='yes'>Tacking 发表于 2024-12-23 16:37
谢谢,我了解下倍压整流电路!

<p>另一个办法,是使用可重复触发的单稳态触发器,例如74HC123。当可重复触发的单稳态触发器输入端有变化时,芯片即进入暂稳态,如果在单稳时间内有重复触发,则芯片输出保持不变(可以是高电平也可以是低电平,各一个输出端)。单稳时间过去后,输出端翻转。</p>
</div><script>showreplylogin();</script>

maychang 发表于 2024-12-23 17:06

<div class='shownolgin' data-isdigest='yes'>Tacking 发表于 2024-12-23 16:41
没有的时候,我用逻辑分析仪抓了下波形,就是一直处于高电平状态!我现在就是想通过外部中断来监测,但是 ...

<p>其实,成本最低的办法就是定时检测若干I/O引脚的状态,与上次检测到的状态比较,看是否有变化。这个方法和单片机读取小键盘的方法很相似。</p>
</div><script>showreplylogin();</script>

秦天qintian0303 发表于 2024-12-23 17:10

<div class='shownolgin' data-isdigest='yes'>Tacking 发表于 2024-12-23 16:41
没有的时候,我用逻辑分析仪抓了下波形,就是一直处于高电平状态!我现在就是想通过外部中断来监测,但是 ...

<p>你创建一个变量,每次高电平就会进入一次中断就++,这个时候在创建一个定时器大于你的外部的周期2倍,第二次进入定时器变量还没有变化就说明没有波形,如果又就会一直+</p>
</div><script>showreplylogin();</script>

秦天qintian0303 发表于 2024-12-23 17:12

<div class='shownolgin' data-isdigest='yes'>Tacking 发表于 2024-12-23 16:41
没有的时候,我用逻辑分析仪抓了下波形,就是一直处于高电平状态!我现在就是想通过外部中断来监测,但是 ...

<p>还有一种方法就是用定时器的捕获,基本上高级定时器都带4路捕获,直接可以把每一路的频率都读出来</p>
</div><script>showreplylogin();</script>

秦天qintian0303 发表于 2024-12-23 17:14

<div class='shownolgin' data-isdigest='yes'><p>个人认为外部中断相对准确而且简单,不过也是会频繁进中断,这个得看你的系统都需要处理什么了</p>
</div><script>showreplylogin();</script>

秦天qintian0303 发表于 2024-12-23 17:15

<div class='shownolgin' data-isdigest='yes'><p>IO口得读取也可以,需要设计好IO读取得周期</p>
</div><script>showreplylogin();</script>

Tacking 发表于 2024-12-23 17:20

<div class='shownolgin' data-isdigest='yes'>maychang 发表于 2024-12-23 17:06
其实,成本最低的办法就是定时检测若干I/O引脚的状态,与上次检测到的状态比较,看是否有变化。这个方法 ...

<p>我仔细思考了下,综合考虑下决定还是采用定时器定时监测IO引脚电平是否变化来做!非常感谢您的耐心指导。</p>
</div><script>showreplylogin();</script>

Tacking 发表于 2024-12-23 17:21

<div class='shownolgin' data-isdigest='yes'>秦天qintian0303 发表于 2024-12-23 17:15
IO口得读取也可以,需要设计好IO读取得周期

<p>我仔细思考了下,综合考虑下决定还是采用定时器定时监测IO引脚电平是否变化来做!非常感谢您的耐心指导。</p>
</div><script>showreplylogin();</script>

Mysxuan 发表于 2025-1-16 16:31

<div class='shownolgin' data-isdigest='yes'>方波的占空比是多少,如果占空比稍大一些的话,可以通过RC滤波进入到比较器再进行输出(纯硬件的思维,哈哈)</div><script>showreplylogin();</script>

lkh747566933 发表于 2025-1-21 14:30

<div class='shownolgin' data-isdigest='yes'>涅米说明表你的监测是要让单片机知道还是让人知道。</div><script>showreplylogin();</script>

eew_Ya3s2d 发表于 2025-1-22 14:10

<div class='shownolgin' data-isdigest='yes'><p>用外部中断就可以呀,端口电平变化就会进入中断,一般的单片机都有,注意画板的时候看看对应的管脚是否可以设置中断输入,上升沿/下降沿/边沿中断都可以触发中断,设置好中断的优先级。</p>
</div><script>showreplylogin();</script>
页: 1 [2]
查看完整版本: 大佬们上午好:请问有什么好的方法检测IO口是否一直处于高电平?