我在鲲鹏开发板(型号为泰山200,基于鲲鹏920,系统为openEuler 21.03)上尝试通过sysfs控制GPIO来驱动步进电机。代码逻辑很简单:先向 /sys/class/gpio/gpio18/value 写入1,然后 usleep(100),再写入0,以此产生脉冲。但用示波器观察实际输出的脉冲宽度极不稳定,设定的100微秒有时变成80微秒,有时变成130微秒,并且偶尔会丢失脉冲。同样的代码在树莓派上运行正常。我确认过开发板没有其他进程在抢占GPIO引脚。请问是什么原因导致的?有没有办法在鲲鹏开发板上输出稳定的微秒级脉冲?
我在鲲鹏开发板(型号为泰山200,基于鲲鹏920,系统为openEuler 21.03)上尝试通过sysfs控制GPIO来驱动步进电机。代码逻辑很简单:先向 /sys/class/gpio/gpio18/value 写入1,然后 usleep(100),再写入0,以此产生脉冲。但用示波器观察实际输出的脉冲宽度极不稳定,设定的100微秒有时变成80微秒,有时变成130微秒,并且偶尔会丢失脉冲。同样的代码在树莓派上运行正常。我确认过开发板没有其他进程在抢占GPIO引脚。请问是什么原因导致的?有没有办法在鲲鹏开发板上输出稳定的微秒级脉冲?