使用pigpio库在树莓派4上配置简单ISR时遇问题
树莓派4 pigpio ISR问题修复方案
错误1:未启动daemon时gpioSetISRFunc返回-123
- 原因:
gpioSetISRFunc是pigpio daemon客户端专属接口,直接链接pigpio本地库(不启动daemon)时无法调用该函数。 - 修复:
- 方案1:切换到daemon模式(先启动
pigpiod)使用该接口; - 方案2:本地模式下改用
gpioSetAlertFunc替代gpioSetISRFunc实现中断回调,该函数支持直接调用pigpio库的场景。
- 方案1:切换到daemon模式(先启动
错误2:启动daemon后gpioInitialise失败,提示无法锁定/var/run/pigpio.pid
- 原因:系统中已有pigpiod进程在运行,或残留的pid文件导致新进程无法获取锁。
- 修复步骤:
- 检查现有pigpiod进程:
ps aux | grep pigpiod - 杀掉所有pigpiod进程:
sudo killall pigpiod - 手动删除残留pid文件:
sudo rm /var/run/pigpio.pid - 重新启动daemon:
sudo pigpiod
- 检查现有pigpiod进程:
错误3:删除pid文件后出现端口占用问题
- 原因:pigpiod默认占用8888端口,之前的daemon进程未彻底终止,仍在占用端口资源。
- 修复步骤:
- 查询8888端口占用进程:
sudo lsof -i :8888 - 根据输出中的PID杀掉对应进程:
sudo kill -9 <PID>(将<PID>替换为实际进程ID) - 重新启动pigpiod daemon:
sudo pigpiod
- 查询8888端口占用进程:
额外注意事项
- 始终用
sudo权限运行pigpio相关程序和daemon,避免权限不足问题; - 若更换GPIO端口无效,可尝试重启树莓派后再测试,排除硬件临时异常。
内容的提问来源于stack exchange,提问作者Mads N
相关产品推荐
相关产品推荐

