...

반응형

GPIO 포트를 1초 간격으로 토클하는 예제입니다
디바이스트리에서 출력할 포트가 설정되어 있어야 됩니다

#include <stdio.h>
#include <zephyr/kernel.h>
#include <zephyr/drivers/gpio.h>

/* 1000 msec = 1 sec */
#define SLEEP_TIME_MS   1000

// 디바이스 트리에서 led0 노드를 가져옴
#define LED0_NODE DT_ALIAS(led0)

// 가져온 led 노드를 구주체로 초기화
static const struct gpio_dt_spec led0 = GPIO_DT_SPEC_GET(LED0_NODE, gpios);

int main(void)
{
	int ret;
	bool led_state = true;

	// gpio가 준비되었는지 확인
	if (!gpio_is_ready_dt(&led0)) {
		return 0;
	}

	// led 핀을 출력으로 설정
	ret = gpio_pin_configure_dt(&led0, GPIO_OUTPUT_ACTIVE);


	while (1) {

		// led 핀을 토클
		ret = gpio_pin_toggle_dt(&led0);
		if (ret < 0) {
			return 0;
		}

		led_state = !led_state;
		printf("LED state: %s\n", led_state ? "ON" : "OFF");
		k_msleep(SLEEP_TIME_MS);
	}
	return 0;
}

 

 

반응형