Zephyr操作系统:使用DTS phandle数组初始化多个GPIO



在我的板上,我有10个LED连接到不同的GPIO。在板的DTS文件中,所有引脚定义为

leds {
compatible = "gpio-leds";
led0: led_0 {
gpios = <&gpio0 28 GPIO_ACTIVE_LOW>;
label = "Green LED 0";
};
...
led9: led_9 {
gpios = <&gpio0 29 GPIO_ACTIVE_LOW>;
label = "Green LED 9";
};
};

在代码中,我有一个很长的device_get_binding/gpio_pin_configure 序列

如何使用UTIL_LISTIFY以及如何正确描述DTS文件中的引脚阵列来使用索引控制LED?一般来说,我希望有一个类似cx1276.c驱动程序的解决方案,但在用户空间。

好的,如果没有其他人回答,我会发布我的解决方案。在Zephyr中处理硬件操作的最佳方式是编写设备驱动程序。在我的案例中,我将所有pin定义放在一个单独的DTS文件中,并将整个LED工作组织为一个系统调用函数。它可以显示预定义的模式或动态生成的模式。

Github Gist与解决方案:

https://gist.github.com/Delsian/f64e7a26ebc67c3b9ea4cf04d057f15c

相关内容

  • 没有找到相关文章

最新更新