...

반응형

타이머 설정하는 방법입니다
K_TIMER_DEFINE 또는 k_timer_init 둘중 하나로 타이머를 초기화 해주면 됩니다

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

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

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

struct k_timer timer;

void timer_start(struct k_timer *timer_id){
	printk("timer Start\n");
	int ret;
	ret = gpio_pin_toggle_dt(&led0);
	if (ret < 0) {
		return;
	}
}

void timer_stop(struct k_timer *timer_id){
	printk("timer Stop\n");
}
// k_timer_init 또는 K_TIMER_DEFINE로 타이머 설정
K_TIMER_DEFINE(timer,timer_start,timer_stop);

int main(void)
{
	int ret;

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

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

	// 타이머 설정, timer 시작 함수, timer 종료 함수 설정
	// k_timer_init(&timer, timer_start, NULL);
	//k_timer_init(&timer, timer_start, timer_stop);
	// 타이머 시작, 타이머가 최초로 시작되는 시간, 타이머 실행 주기
	k_timer_start(&timer, K_SECONDS(1), K_SECONDS(1));

	// 타이머 중지
	//k_timer_stop(&timer);

	while (1) {

	}
	return 0;
}
반응형