Update repo
This commit is contained in:
1 parent
d229fd964d
commit
ff59d1588c
2 files changed
+30
-6
No files matched your search
@@ -8,7 +8,9 @@
|
|||||||
|
|
||||||
gpio_keys {
|
gpio_keys {
|
||||||
compatible = "gpio-keys";
|
compatible = "gpio-keys";
|
||||||
|
debounce-interval-ms = <30>;
|
||||||
|
|
||||||
|
/* <node_label>: <node_name> {}; */
|
||||||
user_button0: button {
|
user_button0: button {
|
||||||
label = "Button";
|
label = "Button";
|
||||||
gpios = <&gpioc 13 GPIO_ACTIVE_HIGH>;
|
gpios = <&gpioc 13 GPIO_ACTIVE_HIGH>;
|
||||||
|
|||||||
@@ -10,9 +10,14 @@
|
|||||||
#error "Board does not define alias sw0. Add a boad overlay"
|
#error "Board does not define alias sw0. Add a boad overlay"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
const struct gpio_dt_spec led =
|
||||||
|
GPIO_DT_SPEC_GET(DT_ALIAS(led0), gpios);
|
||||||
|
|
||||||
static const struct gpio_dt_spec button =
|
static const struct gpio_dt_spec button =
|
||||||
GPIO_DT_SPEC_GET(DT_ALIAS(sw0), gpios);
|
GPIO_DT_SPEC_GET(DT_ALIAS(sw0), gpios);
|
||||||
|
|
||||||
|
bool led_on;
|
||||||
|
|
||||||
static struct gpio_callback button_cb;
|
static struct gpio_callback button_cb;
|
||||||
|
|
||||||
static void button_isr(const struct device *port,
|
static void button_isr(const struct device *port,
|
||||||
@@ -30,15 +35,36 @@ static void button_isr(const struct device *port,
|
|||||||
printk("[IRQ] Button state: %s\r\n", v ? "ACTIVE" : "INVACTIVE");
|
printk("[IRQ] Button state: %s\r\n", v ? "ACTIVE" : "INVACTIVE");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
led_on = !led_on;
|
||||||
|
gpio_pin_set_dt(&led, (int)led_on);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int main(void) {
|
int main(void) {
|
||||||
|
|
||||||
if(!device_is_ready(button.port)) {
|
int ret;
|
||||||
|
|
||||||
|
if (!device_is_ready(led.port) || !device_is_ready(button.port)) {
|
||||||
|
printk("GPIO device not ready\n");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(gpio_pin_configure_dt(&button, GPIO_INPUT) != 0) {
|
ret = gpio_pin_configure_dt(&led, GPIO_OUTPUT_INACTIVE);
|
||||||
|
if (ret != 0) {
|
||||||
|
printk("Failed to configure LED: %d\n", ret);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
ret = gpio_pin_configure_dt(&button, GPIO_INPUT);
|
||||||
|
if (ret != 0) {
|
||||||
|
printk("Failed to configure button: %d\n", ret);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// gpio_pin_interrupt_configure_dt(&button, GPIO_INT_EDGE_BOTH)
|
||||||
|
ret = gpio_pin_interrupt_configure_dt(&button, GPIO_INT_EDGE_TO_ACTIVE);
|
||||||
|
if (ret != 0) {
|
||||||
|
printk("Failed to configure interrupt: %d\n", ret);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -46,10 +72,6 @@ int main(void) {
|
|||||||
gpio_init_callback(&button_cb, button_isr, BIT(button.pin));
|
gpio_init_callback(&button_cb, button_isr, BIT(button.pin));
|
||||||
gpio_add_callback(button.port, &button_cb);
|
gpio_add_callback(button.port, &button_cb);
|
||||||
|
|
||||||
if(gpio_pin_interrupt_configure_dt(&button, GPIO_INT_EDGE_BOTH) != 0) {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
printk("\r\n[EXTI] Button pin interrupt is ready. Press button\r\n");
|
printk("\r\n[EXTI] Button pin interrupt is ready. Press button\r\n");
|
||||||
|
|
||||||
while (1) {
|
while (1) {
|
||||||
|
|||||||
Reference in new issue
Block a user