ble_app_uart_s130_pca10028(nRF51822 PCA10028) 예제에 타이머 인터럽트를 추가하기
nRF51에서 타이머 인터럽트를 구현하는 방법은 여러가지가 있지만 저는 app timer를 추가하는 방법을 소개 하겠습니다.
방법은 아래 소스를 전부 넣어 주고 메인문에 "timers_init"와 "Z application_timers_start"함수를 호출해 주면 됩니다.
당연히 초화 함수를 먼저 호출하고 스타트 함수를 호출해야됩니다.
타이머 인터럽트가 발생되면 "battery_level_meas_timeout_handler"함수가 실행됩니다.
첫줄의 UNUSED_PARAMETER(p_context);는 무슨 역할을 하는지 모르겠습니다.
아래 소스는 LED_2번을 1초마다 깜빡이는 소스입니다.
인터럽트 발생 주기를 변경하시려면
1번줄의 APP_TIMER_TICKS 함수의 첫번재 인자의 숫자를 변경하시면 됩니다. 단위는 ms입니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | #define BATTERY_LEVEL_MEAS_INTERVAL APP_TIMER_TICKS(1000, APP_TIMER_PRESCALER) /**< Battery level measurement interval (ticks). */ APP_TIMER_DEF(m_battery_timer_id); /**< Battery timer. */ /**@brief Function for handling the Battery measurement timer timeout. * * @details This function will be called each time the battery level measurement timer expires. * * @param[in] p_context Pointer used for passing some arbitrary information (context) from the * app_start_timer() call to the timeout handler. */ static void battery_level_meas_timeout_handler(void * p_context) { UNUSED_PARAMETER(p_context); nrf_gpio_pin_toggle(LED_2); } /**@brief Function for the Timer initialization. * * @details Initializes the timer module. This creates and starts application timers. */ static void timers_init(void) { uint32_t err_code; // Initialize timer module. APP_TIMER_INIT(APP_TIMER_PRESCALER, APP_TIMER_OP_QUEUE_SIZE, false); // Create timers. err_code = app_timer_create(&m_battery_timer_id, APP_TIMER_MODE_REPEATED, battery_level_meas_timeout_handler); APP_ERROR_CHECK(err_code); } /**@brief Function for starting application timers. */ static void application_timers_start(void) { uint32_t err_code; // Start application timers. err_code = app_timer_start(m_battery_timer_id, BATTERY_LEVEL_MEAS_INTERVAL, NULL); APP_ERROR_CHECK(err_code); } | cs |
'Programing > Nordic(BLE)' 카테고리의 다른 글
simple_dc_pca10028 (nRF51 PCA10028) 예제에 타이머 인터럽트 추가하기 (0) | 2016.01.20 |
---|---|
nRF51 ADC 사용하기 (0) | 2016.01.19 |
UART 양방향 통신이 되지 않을 때 (0) | 2016.01.15 |
nrf51 시리즈 개발환경 구축 (0) | 2016.01.10 |
LED 인티케이터 동작시 다른 LED가 꺼지는 현상 (0) | 2016.01.09 |