完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
其实在loop循环函数里面读取对饮应引脚的值是可以实现和外部中断差不多的效果的,但是我们这里使用Ardunio ESP32 库里面的外部中断函数来完成我们的中断,但是大家尽量不要再中断函数里面执行太长时间的代码,否则的话就直接用循环读取的方法,我这里作为演示,因为我们代码很简单只有中断演示的部分,所以在里面加了一个消抖时间(因为我使用杜邦线把引脚拉高拉低所以一定会出现很大抖动),这个消抖时间如果太长在主函数需要cpu的时候就会托住整个执行。所以消抖是否要加,加多长时间自己根据自己用的什么决定,如果是很稳定的电路板两个芯片之间的引脚交流或者传感器的引脚交流,那可以加很少的消抖时间甚至不加,而如果是按键这种,就加10ms左右,自己调一下,越小越好但还是要保证中断稳定,要是你也拿杜邦线做这个实验,最好20ms以上,人去用手连线,抖动非常大
const byte interruptPin_0 = 25; //这就是我们设置中断的目标对应的那个引脚 const byte interruptPin_1 = 23; //我们设置两个中断来完成这个实验 volatile int interruptCounter = 0; //0号中断发生中断的次数 volatile int interruptCounter_1 = 0; //1号中断发生中断的次数 portMUX_TYPE mux = portMUX_INITIALIZER_UNLOCKED; //声明一个portMUX_TYPE类型的变量,利用其对主代码和中断之间的同步进行处理 portMUX_TYPE mux_1 = portMUX_INITIALIZER_UNLOCKED; void handleInterrupt() { portENTER_CRITICAL_ISR(&mux); delay(20); //延时20ms作为消抖,如果是很稳定的中断可以不加或者加很少的消抖时间 if(digitalRead(interruptPin_0) == 0) //因为是下拉触发,所以在消抖时间完后读取引脚高低电平,如果还是为低那么就代表出现了一次稳定的中断 { interruptCounter++; Serial.println("0号中断对应的引脚发生中断!!!"); Serial.print("0号中断发生次数:");Serial.println(interruptCounter); } portEXIT_CRITICAL_ISR(&mux); } void handleInterrupt_1() { portENTER_CRITICAL_ISR(&mux_1); delay(20); //延时20ms作为消抖,如果是很稳定的中断可以不加或者加很少的消抖时间 if(digitalRead(interruptPin_1) == 1) //因为是上拉触发,所以在消抖时间完后读取引脚高低电平,如果还是为高那么就代表出现了一次稳定的中断 { interruptCounter_1++; Serial.println("1号中断对应的引脚发生中断!!!"); Serial.print("1号中断发生次数:");Serial.println(interruptCounter_1); } portEXIT_CRITICAL_ISR(&mux_1); } void setup() { Serial.begin(115200); Serial.println("中断测试实验"); pinMode(interruptPin_0, INPUT_PULLUP); //先把引脚设置为上拉输入模式 pinMode(interruptPin_1, INPUT_PULLDOWN); //这个我们设置为下拉 //我们通过调用attachInterrupt函数将中断附加到引脚 //handleInterrupt 是中断触发后的触发函数 //FALLING 代表下拉触发,也就是由高电平向低电平转化时触发 RISING当然就是上拉触发 attachInterrupt(digitalPinToInterrupt(interruptPin_0), handleInterrupt, FALLING); attachInterrupt(digitalPinToInterrupt(interruptPin_1), handleInterrupt_1, RISING); } void loop() { } |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
353 浏览 1 评论
1758 浏览 1 评论
3013 浏览 1 评论
synopsys 的design ware:DW_fpv_div,浮点数除法器,默认32位下,想提升覆盖率(TMAX),如果用功能case去提升覆盖率呢?
3751 浏览 1 评论
RK3588 GStreamer调试四路鱼眼摄像头四宫格显示报错
6562 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-18 23:40 , Processed in 0.492706 second(s), Total 72, Slave 56 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号