您尚未登录。

楼主 # 2025-05-28 17:41:52

onongg
会员
注册时间: 2025-05-13
已发帖子: 5
积分: 15

请教:ESP32下py里有循环,清看门狗问题

在学习了解,参照https://gitee.com/Lyon1998/pikapython/blob/master/examples/Device/GPIO_CALLBCK.py
import PikaStdDevice as std
print('hello pikascript')

io = std.GPIO()
io.setPin('P4')
io.setMode('in')
io.enable()

def cb1(signal):
    print('cb1', signal)

io.setCallBack(cb1, io.SIGNAL_FALLING)

while True:
    pass

在ESP32S3下,默认有看门狗,py文件里有while循环,会触发看门狗.
是哪里有触发调度的我没去处理?

离线

#1 2025-05-28 20:33:16

海石生风
会员
所在地: 深圳
注册时间: 2019-07-02
已发帖子: 708
积分: 842
个人网站

Re: 请教:ESP32下py里有循环,清看门狗问题

看门狗就是为了防止循环出不来

离线

#2 2025-05-28 23:12:38

lyon1998
Moderator
注册时间: 2021-12-01
已发帖子: 139
积分: 155

Re: 请教:ESP32下py里有循环,清看门狗问题

esp32如果长时间没有进vTaskDelay切其他线程就会进看门狗,你可以定时进 vTaskDelay,python里面的time模块的sleep方法会调vTaskDealy,前提是打开PIKA_FREERTOS_ENABLE宏提供 freertos支持,你可以安装time模块,然后这样:

import PikaStdDevice as std
import time
print('hello pikascript')

io = std.GPIO()
io.setPin('P4')
io.setMode('in')
io.enable()

def cb1(signal):
    print('cb1', signal)

io.setCallBack(cb1, io.SIGNAL_FALLING)

while True:
    time.sleep(0.1)

离线

楼主 #3 昨天 10:53:35

onongg
会员
注册时间: 2025-05-13
已发帖子: 5
积分: 15

Re: 请教:ESP32下py里有循环,清看门狗问题

弄ESP32需要vTaskDelay切换这个是知道的.只是不清楚PIKA里关联的需要RTOS支持,time这部分.

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn