본문 바로가기

Study501

static !! C와 JAVA에는 둘다 static이 있습니다. 하지만 같은듯 하면서도 둘은 언어에 따라 완전 다른 역할을 합니다. C에서의 static!! C에서는 static을 선언하면, 선언한 함수나 선언한 C파일(*.C)에서만 사용가능하며, 초기화는 처음 컴파일할때만 하게 됩니다. 즉, 정적이면서도, 지역변수가 되는 거지요. 예를 들어 아래의 함수가 있다고 한다면 void ex(void){ int a=0; static int b=0; a++; b++; printf("a=%d b=%d\n",a,b);} int main(void){ while(1) { ex(); }}a의 값은 계속해서 0으로 출력이 되지만, b의 값은 점점 증가할 것입니다. 또한 main에서는 저 b라는 변수에 접근을 할 수가 없습니다. 아래와 같이.. 2015. 3. 5.
nRF51 DK 예제 10 - PWM 이번 예제는 PWM입니다. Timer를 이용하여 LED를 toggle하는데, 버튼을 누를때마다 토글되는 간격이 변하는 PWM예제입니다. main.c 1234567891011121314151617181920212223int main(void){ gpiote_init(); bsp_configuration(); ppi_init(); timer2_init(); NRF_POWER->TASKS_CONSTLAT = 1; // Enable interrupt on Timer 2. NVIC_EnableIRQ(TIMER2_IRQn); __enable_irq(); *(uint32_t *)0x4000AC0C = 1; // Start the timer. NRF_TIMER2->TASKS_START = 1; while (true) .. 2015. 3. 4.
nRF51 DK 예제 9 - PPI PPI는 GPIOTE 예제때 한번 나왔던 Programmable Peripheral Interconnect 를 말합니다. GPIOTE예제때는 타이머를 EEP로 LED토글(GPIOTE TASK)을 TEP로 해서 테스트를 했었습니다. 이번 예제에서는 타이머 3가지를 이용한 예제입니다. 타이머0은 카운터로 설정하고, 타이머1과 타이머2를 사용하여, 타이머1일때는 타이머0이 멈추고, 타이머 2일때는 타이머0이 동작해서 매 200ms마다 타이머0을 카운터하는 예제입니다. 먼저 main함수부터 보겠습니다. main.c 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647int main(void){ timer0_ini.. 2015. 3. 4.
nRF51 DK 예제 8 - Pin change interrupt 이번 예제는 interrupt 예제입니다. main.c 123456789int main(void){ gpio_init(); while (true) { // Do nothing. }}cs 이번 예제는 Line 3의 gpio_init()으로 끝입니다. 123456789101112static void gpio_init(void){ nrf_gpio_cfg_output(PIN_OUT); nrf_gpio_cfg_input(PIN_IN, NRF_GPIO_PIN_PULLUP); nrf_gpio_pin_clear(PIN_OUT); // Enable interrupt: NVIC_EnableIRQ(GPIOTE_IRQn); NRF_GPIOTE->CONFIG[0] = (GPIOTE_CONFIG_POLARITY_Toggle 2015. 3. 3.
nRF51 DK 예제 7 -Radio Receiver 이번 예제 역시 Radio Transmitter 예제와 함께 하는 예제입니다. 이 소스는 동글에 설치하였습니다. 사용한 제품은 nrf51 dongle로 모델명은 PCA10031입니다 소스는 앞의 Radio Transmitter와 거의 비슷합니다. main.c 1234567891011121314151617181920212223242526272829303132333435363738394041424344int main(void){ uint32_t err_code = NRF_SUCCESS; clock_initialization(); APP_TIMER_INIT(APP_TIMER_PRESCALER, APP_TIMER_MAX_TIMERS, APP_TIMER_OP_QUEUE_SIZE, false); const app_.. 2015. 3. 3.
nRF51 DK 예제 6 -Radio Transmitter 이번 예제는 무선으로 패킷을 주고받는 예제입니다. 이 예제를 하기위해서는 보드가 2개가 필요한데, 동글을 이용하여도 됩니다. nrf51 DK(PCA 10028)은 transmitter로 dongle(PCA 10031)은 receiver로 설정합니다. main 12345678910111213141516171819202122232425262728293031323334353637383940414243444546int main(void){ uint32_t err_code = NRF_SUCCESS; clock_initialization(); APP_TIMER_INIT(APP_TIMER_PRESCALER, APP_TIMER_MAX_TIMERS, APP_TIMER_OP_QUEUE_SIZE, false); APP_GP.. 2015. 3. 3.

인기글