[Zephyr] nRF52 GPIO 입력 제어(폴링)!!
Embeded/nRF522024. 11. 28. 12:10
반응형
폴링 방식으로 버튼 입력을 받아서 버튼을 토글 시키는 예제입니다
디커플링에 대한 처리가 필요하고
디바이스트리에서 출력할 포트와 버튼에 대한 설정이 되어 있어야 됩니다
#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)
// 디바이스 트리에서 button 노드를 가져옴
#define BUTTON DT_ALIAS(button)
// 가져온 led 노드를 구주체로 초기화
static const struct gpio_dt_spec led0 = GPIO_DT_SPEC_GET(LED0_NODE, gpios);
// 가져온 button 노드를 구주체로 초기화
static const struct gpio_dt_spec button = GPIO_DT_SPEC_GET(BUTTON, gpios);
int main(void)
{
int ret;
bool led_state = true;
// gpio가 준비되었는지 확인
if (!gpio_is_ready_dt(&led0)) {
return 0;
}
// gpio가 준비되었는지 확인
if (!gpio_is_ready_dt(&button)) {
return 0;
}
// button 핀을 입력으로 설정
ret = gpio_pin_configure_dt(&button, GPIO_INPUT);
// led 핀을 출력으로 설정
ret = gpio_pin_configure_dt(&led0, GPIO_OUTPUT_ACTIVE);
// 에러 처리가 필요할 경우 추가
// if (ret < 0) {
// return 0;
// }
while (1) {
int value = gpio_pin_get_dt(&button);
if (value == 0) {
} else {
gpio_pin_toggle_dt(&led0);
}
}
return 0;
}
반응형
'Embeded > nRF52' 카테고리의 다른 글
[Zephyr] nRF52 타이머(timer) 사용법!! (0) | 2024.11.28 |
---|---|
[Zephyr] nRF52 Thread(쓰레드) 방법!! (0) | 2024.11.28 |
[Zephyr] nRF52 GPIO 입력 제어(인터럽트)!! (0) | 2024.11.28 |
[Zephyr] nRF52 GPIO 출력 제어!! (0) | 2024.11.28 |
[nRF51822] 블루투스 연동 테스트 (0) | 2016.11.17 |