GPIO口外部中断的使用

中断的概念
单片机的中断系统是使CPU具有对外界或者内部随机发生的事件实时处理而设置的。
具体来说,比如对于单片机的CPU,当它正在处理事件A时,此时突然发生了另一件事件B,事件B需要CPU紧急处理(称为中断请求),这时CPU就会暂停处理事件A(称为中断响应),先去处理事件B,等事件B处理完之后,再回来继续做事件A(称为中断返回)。
以生活中的事情举个例子,比如你正在家里写作业(事件A),这时有人来敲门了,你需要去开门(事件B)(中断请求),这时候你需要停下手中的作业,先去开门(中断响应),等处理好开门等事情之后,继续回来写作业(中断返回)。

图片

那如果同时发生两个中断事件B和事件C,此时CPU应该先去处理事件B还是事件C?或者单片机正在处理中断事件B时,突然发生了中断请求事件C,那这时候,CPU应该是先处理完事件B再去处理事件C还是先去处理事件C,等事件C处理完之后再回来处理事件B?
此时就涉及到中断的优先级问题。哪个事件的优先级高,就先去处理哪个事件。当两个中断事件的优先级一样时,哪个事件先发生就先去处理哪个事件。
单片机的中断有外部中断和内部中断两大类。
单片机的外部中断一般以GPIO口作为外部中断的输入;单片机的内部中断一般为定时器中断和串口中断等。
ESP32C3有31个中断,15个中断优先级别,每个中断的优级别可以独立的通过编程设置。
GPIO中断函数介绍
我们在教程二中介绍Pin类的方法时,其实提到过GPIO的中断函数,如下:
Pin.irq(handler=None, trigger=Pin.IRQ_FALLING | Pin.IRQ_RISING,        *, priority=1, wake=None, hard=False)
参数的含义如下:
  • handler:中断的回调函数,中断函数的参数为Pin的一个实例对象
  • trigger:配置触发中断的方式。
    • Pin.IRQ_FALLING表示下降沿触发
    • Pin.IRQ_RISING表示上升沿触发
    • Pin.IRQ_LOW_LEVEL表示低电平触发
    • Pin.IRQ_HIGH_LEVEL表示高电平触发
    • 也可以通过“或”运算来表示多个事件都可以触发。
    • 比如trigger=Pin.IRQ_FALLING | Pin.IRQ_RISING,表示下降沿和上升沿都可以触发中断。
以下几个参数,只有在某些芯片上才支持。
  • priority:表示中断的优先级别。数字越大,优先级别越高。
  • wake:中断可以唤醒系统的电源模式。可以是machine.IDLE,machine.SLEEP和machine.DEEPSLEEP。这些值也可以进行或运算。
  • hard:如果为true,则使用硬件中断。
ESP32C3外部中断实战
from machine import Pinimport time
led = Pin(12, Pin.OUT) button = Pin(9, Pin.IN, Pin.PULL_UP) 
def button_handler(b):    time.sleep_ms(20)    global led    led.value(not led.value())
button.irq(handler=button_handler, trigger=Pin.IRQ_FALLING)
while True:    # 这里什么也不做处理。实际应用中,这里可以处理一些事情    pass
上面的代码中,每次按下按键,会翻转led的亮灭状态。可以看到按键配置了一个中断函数,即button_handler,中断的触发方式为下降沿触发。中断函数中,先进行了20ms的延时,这个主要是避免按键的抖动导致多次触发中断。延时之后,对led的状态进行翻转。
示例代码中,while循环中,目前什么也不做处理。实际应用中可以让单片机进入休眠状态,来减少功耗,然后等到有外部中断请求时,单片机再进行处理,等处理完事情之后,再进入休眠状态。当然,实际应用中,单片机的while循环也可以处理一些其他事情,等有外部中断时,再去处理中断的事情。

原创文章,作者:guozi,如若转载,请注明出处:https://www.sudun.com/ask/82331.html

Like (0)
guozi的头像guozi
Previous 2024年5月31日 下午3:22
Next 2024年5月31日 下午3:28

相关推荐

  • 域名被墙还能弄回来吗,域名被墙如何解决

    当您的域名被中国电信屏蔽后,有多种解决方案。通过了解电信墙的原理并采取对策,您可以绕过电信墙,访问被屏蔽的网站,保护您的信息自由。但请注意,使用翻墙工具可能会带来安全风险。我们鼓励…

    行业资讯 2024年5月7日
    0
  • 云服务器便宜2023

    云服务器便宜2023,这是一个令人兴奋的标题。随着信息技术的飞速发展,云计算已经成为当今最炙手可热的话题之一。而作为云计算的基础设施,云服务器更是备受关注。那么,什么是云服务器?它…

    行业资讯 2024年4月21日
    0
  • 网址被屏蔽有什么办法破解没,手机网站被屏蔽了怎么打开

    手机上URL被屏蔽的现象屡见不鲜,给网站运营和用户访问带来极大不便。要消除此限制,您可以采取一些步骤来防止和解决它。作为速盾网编辑小苏提醒大家,在选择CDN加速服务和网络安全服务时…

    行业资讯 2024年5月7日
    0
  • 如何设计网站?

    想要拥有一个成功的网站,设计是至关重要的一环。在当今互联网时代,网站已经成为企业或个人展示自己的重要窗口。但是如何设计一个优秀的网站呢?在这篇文章中,我将会带您一起探讨网站设计的重…

    行业资讯 2024年3月19日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注