1 /*
2 * Copyright 2025 NXP
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 */
6
7 #include <stdbool.h>
8 #include <zephyr/kernel.h>
9 #include <zephyr/drivers/gpio.h>
10 #include <zephyr/devicetree.h>
11 #include <zephyr/drivers/i2s.h>
12
13 #define SLEEP_TIME_MS 1000
14 #define LED_NODE DT_ALIAS(led1)
15 #define BTN_NODE DT_ALIAS(sw0)
16
17 static const struct gpio_dt_spec led = GPIO_DT_SPEC_GET(LED_NODE, gpios);
18 static const struct gpio_dt_spec btn = GPIO_DT_SPEC_GET_OR(BTN_NODE, gpios, {0});
19 static struct gpio_callback button_cb_data;
20
21 static bool blink = true;
22
23 static struct k_thread th_blink;
24 static K_THREAD_STACK_DEFINE(th_blink_stack, 4096);
25
btn_isr(const struct device * dev,struct gpio_callback * cb,uint32_t pins)26 void btn_isr(const struct device *dev, struct gpio_callback *cb, uint32_t pins)
27 {
28 printk("[DSP] Button pressed!\n");
29 blink = !blink;
30 }
31
thread_blink(void * unused0,void * unused1,void * unused2)32 void thread_blink(void *unused0, void *unused1, void *unused2)
33 {
34 int ret = 0;
35
36 while (1) {
37 if (blink) {
38 ret = gpio_pin_toggle_dt(&led);
39 if (ret < 0) {
40 return;
41 }
42 } else {
43 ret = gpio_pin_set_dt(&led, 0);
44 if (ret < 0) {
45 return;
46 }
47 }
48 k_msleep(SLEEP_TIME_MS);
49 }
50 }
51
main(void)52 int main(void)
53 {
54 int ret;
55
56 printk("[DSP] Hello World! %s\n", CONFIG_BOARD_TARGET);
57
58 if (!gpio_is_ready_dt(&btn)) {
59 return 0;
60 }
61
62 if (gpio_pin_configure_dt(&btn, GPIO_INPUT) != 0) {
63 return 0;
64 }
65
66 if (gpio_pin_interrupt_configure_dt(&btn, GPIO_INT_EDGE_TO_ACTIVE) != 0) {
67 return 0;
68 }
69
70 gpio_init_callback(&button_cb_data, &btn_isr, BIT(btn.pin));
71 gpio_add_callback(btn.port, &button_cb_data);
72
73 if (!gpio_is_ready_dt(&led)) {
74 return 0;
75 }
76
77 ret = gpio_pin_configure_dt(&led, GPIO_OUTPUT_ACTIVE);
78 if (ret < 0) {
79 return 0;
80 }
81
82 k_thread_create(&th_blink, th_blink_stack, K_THREAD_STACK_SIZEOF(th_blink_stack),
83 thread_blink, NULL, NULL, NULL, 5, 0, K_NO_WAIT);
84
85 return 0;
86 }
87