nrf 52832 의 timer

nrf 52832 에는 다섯 개의 타이머 가 있 습 니 다.timer 0-timer 4.SDK 는 이미 timer 0 을 사 용 했 기 때문에 SDK 를 사용 했다 면 timer 0 을 더 이상 사용 할 수 없고 timer 1-timer 4 만 사용 할 수 있다.
개발 환경:bleapp_hrs   demo 에 타이머 작업 추가     timer 라 는 demo 를 참고 하 세 요.
이 예 는 timer 1 을 사용 하고 32bit 모드 로 수정 합 니 다.
단계 추가:
1.드라이버 추가   nrf_drv_timer.c      프로 토 콜 스 택 에 있 는 디 렉 터 리 위치 :   nRF52_SDK\components\drivers_nrf\\timer 폴 더 아래
2.mian.c 에 헤더 파일 nrf 추가drv_timer.h
#include "nrf_drv_timer.h"

3.main.c 에 timer 구조 체 변 수 를 추가 합 니 다.
const nrf_drv_timer_t TIMER_LED = NRF_DRV_TIMER_INSTANCE(1);

4.main.c 에 timer 1 초기 화 함수 와 정시 작업 처리 함 수 를 추가 합 니 다.
/**
 * @brief Handler for timer events.
 */
void timer_led_event_handler(nrf_timer_event_t event_type, void* p_context)
{
   // uint32_t led_to_invert = (1 << leds_list[(i++) % LEDS_NUMBER]);
   // printf("6
"); switch(event_type) { case NRF_TIMER_EVENT_COMPARE0: // LEDS_INVERT(led_to_invert); ledFlash(); break; default: //Do nothing. break; } } void myTimerInit() { uint32_t time_ms = 1000; //Time(in miliseconds) between consecutive compare events. uint32_t time_ticks; uint32_t err_code = NRF_SUCCESS; //Configure all leds on board. //Configure TIMER_LED for generating simple light effect - leds on board will invert his state one after the other. err_code = nrf_drv_timer_init(&TIMER_LED, NULL, timer_led_event_handler); APP_ERROR_CHECK(err_code); time_ticks = nrf_drv_timer_ms_to_ticks(&TIMER_LED, time_ms); nrf_drv_timer_extended_compare( &TIMER_LED, NRF_TIMER_CC_CHANNEL0, time_ticks, NRF_TIMER_SHORT_COMPARE0_CLEAR_MASK, true); nrf_drv_timer_enable(&TIMER_LED); }

5.main 함수 에 timer 초기 화 호출 추가:
	myTimerInit();

6、nrf 에서driver_config.c 에서 timer 1 의 정 의 를 수정 합 니 다:
#define TIMER1_ENABLED 1

#if (TIMER1_ENABLED == 1)
#define TIMER1_CONFIG_FREQUENCY    NRF_TIMER_FREQ_16MHz
#define TIMER1_CONFIG_MODE         TIMER_MODE_MODE_Timer
#define TIMER1_CONFIG_BIT_WIDTH    TIMER_BITMODE_BITMODE_32Bit
#define TIMER1_CONFIG_IRQ_PRIORITY APP_IRQ_PRIORITY_LOW

좋은 웹페이지 즐겨찾기