NCS3.1.1版本里,dts里默认将P1.02,P1.03作为NFCpin,这里需要在配置中去掉nfct的定义,同时还要修改uicr的内容。具体操作如下:

1.在prj.conf里增加如下内容:

/* 先禁用 NFC,释放 P1.02 / P1.03 */
&nfct {
	status = "disabled";
};

&uicr {
      nfct-pins-as-gpios;
};

/ {
    /* 定义两个 GPIO 节点供 C 程序访问 */
    gpio_test {
        compatible = "gpio-leds";
        mygpio1: mygpio1 {
            gpios = <&gpio1 2 GPIO_ACTIVE_HIGH>;
        };
        mygpio2: mygpio2 {
            gpios = <&gpio1 3 GPIO_ACTIVE_HIGH>;
        };
    };

    aliases {
        mygpio1 = &mygpio1;
        mygpio2 = &mygpio2;
    };
};

在测代码里可以如下测试:

const struct gpio_dt_spec mygpio1 = GPIO_DT_SPEC_GET(DT_ALIAS(mygpio1), gpios);
const struct gpio_dt_spec mygpio2 = GPIO_DT_SPEC_GET(DT_ALIAS(mygpio2), gpios);

int main(void)
{
    int i;
    printk("Starting GPIO scan...\n");

    gpio_pin_configure_dt(&mygpio1, GPIO_OUTPUT);
    gpio_pin_configure_dt(&mygpio2, GPIO_OUTPUT);

    while (1) {
        gpio_pin_toggle_dt(&mygpio1);
        gpio_pin_toggle_dt(&mygpio2);
        k_msleep(500);
    }
}

发表回复