개요 | |
nRF52 의 클럭소스는 내부오실레이터 혹은 외부크리스탈 기반 오실레이터 선택적으로 사용 가능하게 되어있고, 별도 설정하지 않으면 내부 클럭 사용된다. 코드에서 외부 크리스탈 을 클럭 소스로 사용하게 하는 코딩과정 상세 정리. nRF52 의 Clock 제어하기 위해서는 레지스터 직접 접근해도 되고, nRF5 SDK 에서 제공되는 라이브러리 함수 이용해도된다. 아래 상세1 박스글에서 보이는 것은 레지스터 직접 제어 코드이다. 그런데, 이후 클럭 기능외에 많은 기능들을 라이브러리 기반으로 할것이므로 라이브러리 함수 이용하는 예도 상세2에 정리하였다.
코드 작업하는 시작 프로젝트 : 프로젝트 템플릿 기반으로 만든 내 프로젝트인 myProject 에 추가로 SysTick 구현된 이후 Clock 제어 코드 추가한다. | |
|
상세1. 레지스터 직접 접근 Clock 컨트롤. | ||
아래 코드예처럼 init_clock() 정의하고 main 에서 init_clock() 호출한다. init_clock 내부에서는 clock 관련 레지스터 직접 접근하여 값들을 설정하고 있다. init_clock() 에서 달성되는 것 : MCU 내부에서 사용할 클럭 소스로 외부 크리스탈 32MHz, 32.768kHz 를 사용하게 하는것.
| ||
상세2. nRF5 SDK 에서 제공되는 함수 이용하는 방법 | ||
clock 제어 관련 nRF5 SDK 에서 제공되는 - 파일 : nrf_drv_clock.c 등, - 함수 : nrf_drv_clock_init(), nrf_drv_clock_lfclk_request(), nrf_drv_clock_lfclk_is_running() 등
아래 동영상에서는 nRF5 SDK 제공되는 상기 라이브러리 활용하여 구현함에 있어서, 예제로 제공되는 examples/peripheral/usb_cdc_acm 프로젝트를 참조하면서 myProject 에서 구현하는 전체 과정을 보이고 있다. | ||
|
본 글 포함된 상위 정리글 https://igotit.tistory.com/244 의 nRF52 |
첫등록 : 2019년 1월 13일
최종수정 :
본 글 단축주소 : https://igotit.tistory.com/2046
'임베디드.일렉트로닉스 > nRF52' 카테고리의 다른 글
nRF52. SWI ( Software Interrupts ) (0) | 2019.01.13 |
---|---|
nRF52. RTC (Real Time Counter/Clock) (0) | 2019.01.13 |
nRF52840. nRF5 SDK 예제프로젝트 참조하여 본인 프로젝트에서 구현하는 방법. SysTick 코딩을 예로 2 (0) | 2019.01.12 |
nRF52. Clock (0) | 2019.01.12 |
nRF52. UART (Universal Asynchronous Receiver Transmitter) (0) | 2019.01.12 |
댓글