I generated an overlay file with the following info:
// To get started, press Ctrl+Space to bring up the completion menu and view the available nodes. // You can also use the buttons in the sidebar to perform actions on nodes. // Actions currently available include: // * Enabling / disabling the node // * Adding the bus to a bus // * Removing the node // * Connecting ADC channels // For more help, browse the DeviceTree documentation at https://docs.zephyrproject.org/latest/guides/dts/index.html // You can also visit the nRF DeviceTree extension documentation at https://docs.nordicsemi.com/bundle/nrf-connect-vscode/page/guides/ncs_configure_app.html#devicetree-support-in-the-extension &gpio0 { status = "okay"; }; &gpiote { status = "okay"; }; / { leds { compatible = "gpio-leds"; yellow_led: led { label = "led"; gpios = <&gpio0 6 0>; }; }; };
and there is my main.c file:
// have some useful utility functions provided by zeyphr kernal. #include <zephyr/kernel.h> // include the GPIO driver #include <zephyr/drivers/gpio.h> // get the gpio pin properties from the .overlay file static struct gpio_dt_spec led = GPIO_DT_SPEC_GET(DT_NODELABEL(yellow_led), gpios); int main(void) { // check if the pin is ready to use (the function returns 0 if everything is ok) if(!gpio_is_ready_dt(&led)) { // end the program return 0; } // check if the pin is configured successfully (the function returns 0 if everything is ok) if(gpio_pin_configure_dt(&led, GPIO_OUTPUT_INACTIVE) < 0) { // end the program return 0; } // loop infinitely while(1) { // toggle the led and check if it was toggled successfully if(gpio_pin_toggle_dt(&led) < 0) { return 0; } // sleep for 1 second k_msleep(1000); } return 0; }
However, when I tried to debug my code to understand what was wrong, I got the following value of the led variable at the start of the main:
$1 = {port = 0x395f <notify_monitors+40>, pin = 0 '\000', dt_flags = 0}
which is incorrect because the pin value should be 6 not 0.