• Lv0
    粉丝0

积分17 / 贡献0

提问3答案被采纳0文章0

关于中断处理函数的最大等待时间问题

delight-light 显示全部楼层 发表于 2024-4-11 22:41:47

问题源于调用 GPIO-05 接口时,将中断处理函数设计成三个 for 循环后,发现若设置 OsDelay 总时间过长,会导致程序未按照预期执行,代码如下:

IMG_20240407_175020.jpg

运行时,发现在按下 Reset 键后并未出现LED灯按照规律亮起的场景。按下前LED仅仅是在按下时有微弱的蓝光闪烁(预先设置是,GPIO-05处于上拉模式)

按照设想,至少在

IoTGpioSetOutputVal(LED_GPIO,IOT_GPIO_VALUE0)
osDelay(100)

有一秒的亮起,但事实并未看到LED灯明亮地发光。

推测中断处理函数并未在按下Reset时运行。

因此,这种现象是否是因为中断处理函数有受限制的最大运行时间?

您尚未登录,无法参与评论,登录后可以:
参与开源共建问题交流
认同或收藏高质量问答
获取积分成为开源共建先驱

精彩评论2

s_hao

沙发 发表于 2024-4-26 16:37:00
这个问题可能是因为你的中断处理函数中包含了三个 for 循环,而这些循环执行时间较长,导致了中断响应时间过长,从而影响了程序的正常执行。在中断处理函数中应该尽量避免使用循环或者其他执行时间较长的操作,以便尽快完成中断处理并返回到主程序。

另外,如果你需要在中断处理函数中执行一些较长时间的操作,可以考虑将这些操作放在一个任务中,并使用消息队列或者信号量等机制与中断处理函数进行通信,以避免中断响应时间过长。

此外,如果你使用了 OsDelay 函数来延时等待操作完成,也需要注意设置合适的延时时间,以免影响程序的正常执行。建议使用定时器等机制来代替 OsDelay 函数,以便更精确地控制延时时间。

delight-light

发表于 2024-4-28 22:45  IP属地: 河北省石家庄市辛集市

回复 s_hao: 您好,执行的时间限制有具体的数值吗?从源码中可以得知吗?

【1 条回复】

Copyright   ©2023  OpenHarmony开发者论坛  京ICP备2020036654号-3 |技术支持 Discuz!

返回顶部