【问题标题】:ZEPHYR RTOS Configuring GPIO PinsZEPHYR RTOS 配置 GPIO 引脚
【发布时间】:2021-07-19 12:49:41
【问题描述】:
您好,我想配置一个自定义 GPIO 引脚作为输出,以控制运行 Zephyr RTOS 的 STM32 H743Zi 板上的电机。
板子的dts文件可以在folder或者单独的文件nucleo h743zi.dtscode中找到。
我想给我们板子ardunio r3 connector.dtsicode提供的arduino管脚映射
我目前开发的覆盖文件为followscode。我想将 D0 引脚(根据 arduino 连接器 dtsi 文件)配置为 GPIO 引脚来控制电机。
但是,我无法配置引脚,并且如果引脚打开,我也不会收到高电平信号。
感谢任何解决此问题的帮助。
【问题讨论】:
标签:
embedded-linux
gpio
device-tree
zephyr-rtos
【解决方案1】:
您可以参考此链接中的答案:
https://github.com/zephyrproject-rtos/zephyr/discussions/35932
就我而言,我使用 Thunderboard Sensor 2 和我的解决方案如下:
-
移动到文件夹 /zephyr/dts/arm/silabs/efr32mg.dtsi 中的
插入您定义的 GPIO 以使用:
...
/ {
zephyr,user {
signal-gpios = <&gpioa 8 GPIO_ACTIVE_HIGH>;
};
...
这里,我使用我的板端口 A 和引脚 8 作为示意图
-
保存文件后,打开项目的主文件并插入如下内容:
#define ZEPHYR_USER_NODE DT_PATH(zephyr_user)
...
void main(void)
{
const struct gpio_dt_spec signal =
GPIO_DT_SPEC_GET(ZEPHYR_USER_NODE, signal_gpios);
/* Configure the pin */
gpio_pin_configure_dt(&signal, GPIO_OUTPUT_INACTIVE);
...
while(1){
/* Toggle the pin PA8*/
gpio_pin_toggle(signal.port, signal.pin);
k_msleep(SLEEP_TIME_MS);
}
...