본문 바로가기

Programing/ Nordic(BLE)

simple_dc_pca10028 (nRF51 PCA10028) 예제에 타이머 인터럽트 추가하기

simple_dc_pca10028 (nRF51 PCA10028) 예제를 실행 시키고 

예제 실행하는 방법을 모른다면 아래 포스팅을 먼저 보고 오세요.

"nrf51 시리즈 개발환경 구축" 바로가기

또한 nRF51 시리즈에서는 app_timer와 nrf_drv_timer 2종류를 사용할 수 있습니다. 

이번에는 nrf_drv_timer를 사용하는 방법을 소개 하겠습니다. 

app_timer 추가는 방법은 아래 포스팅을 참고 하시면 됩니다.

"타이머 인터럽트 추가하기" 바로가기


본격적으로

버튼을 눌려 Manage Run-Time Environment를 실행 시킵니다.

nRF_Drivers - nrf_drv_timer와 nRF_Drivers - nrf_timer 옆에 체크 표시를 한 후 OK를 누룰러 창을 닫아줍니다.


화면 왼쪽에 프로젝트 창에 

Project: simple_adc_pca10028

nrf51422_xxac

Application

main.c

nrf_drv_config.h를 열어서 

아래 코드를 찾아

1
#define TIMER0_ENABLED 0
cs

아래처럼 수정합니다.

1
#define TIMER0_ENABLED 1
cs


main.c에 아래 소스를 추가합니다.

1
#include "nrf_drv_timer.h"
cs


1
const nrf_drv_timer_t m_adc_timer_id = NRF_DRV_TIMER_INSTANCE(0);
cs


1
2
3
void adc_timeout_handler(nrf_timer_event_t event_type, void* p_context) {
        printf("AAA");
}
cs


1
2
3
4
5
6
7
8
9
10
11
12
13
void timer_config(void) {
    uint32_t time_ticks;
    
    nrf_drv_timer_init(&m_adc_timer_id, NULL, adc_timeout_handler);
        
    time_ticks = nrf_drv_timer_ms_to_ticks(&m_adc_timer_id, 500);
    
    nrf_drv_timer_extended_compare(
        &m_adc_timer_id, 
        NRF_TIMER_CC_CHANNEL0, time_ticks, 
        NRF_TIMER_SHORT_COMPARE0_CLEAR_MASK, 
        true);
}
cs


메인함수에서 함수 호출하고

1
timer_config();
cs

타이머를 시작해야되는 부분에서 아래 함수를 호출하면 됩니다.

1
nrf_drv_timer_enable(&m_adc_timer_id);
cs


그러면 0.5초 마다 AAA를 출력해 줍니다.

'Programing > Nordic(BLE)' 카테고리의 다른 글

nRF52832 시작하기  (0) 2019.06.30
nrf51 Pin Function  (0) 2016.01.22
nRF51 ADC 사용하기  (0) 2016.01.19
타이머 인터럽트 추가하기  (0) 2016.01.15
UART 양방향 통신이 되지 않을 때  (0) 2016.01.15