Advertisement
Guest User

Untitled

a guest
May 4th, 2015
297
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.40 KB | None | 0 0
  1. #include <string.h>
  2. #include "uart.h"
  3.  
  4. enum
  5. {
  6.     LED_OFF = 0,
  7.     LED_INIT
  8. };
  9.  
  10. void log(const char *s, ...)
  11. {
  12.     char buf[256] = { 0 };
  13.     va_list v;
  14.     va_start(v, s);
  15.     uint8_t length = vsnprintf(buf, 256, s, v);
  16.     va_end(v);
  17.     uartSend(CMD_DEBUG, (uint8_t*)buf, length + 1);
  18. }
  19.  
  20. void updateLedState(uint8_t state) { uartSend(CMD_LEDSTATE, &state, 1); }
  21.  
  22. volatile bool foobar = false;
  23.  
  24. void TIMER1_IRQHandler()
  25. {
  26.     if(NRF_TIMER1->EVENTS_COMPARE[0])
  27.     {
  28.         foobar = true;
  29.         NRF_TIMER1->EVENTS_COMPARE[0] = 0;
  30.     }
  31. }
  32.  
  33. int main()
  34. {    
  35.     uartInit();
  36.    
  37.     NRF_CLOCK->EVENTS_HFCLKSTARTED = 0;
  38.     NRF_CLOCK->TASKS_HFCLKSTART    = 1;
  39.     while(!NRF_CLOCK->EVENTS_HFCLKSTARTED);
  40.    
  41.     log("init\r\n");
  42.     NVIC_EnableIRQ(TIMER1_IRQn);
  43.     NRF_TIMER1->TASKS_STOP  = 1;
  44.     NRF_TIMER1->MODE        = TIMER_MODE_MODE_Timer;
  45.     NRF_TIMER1->BITMODE     = TIMER_BITMODE_BITMODE_16Bit << TIMER_BITMODE_BITMODE_Pos;
  46.     NRF_TIMER1->PRESCALER   = 4;
  47.     NRF_TIMER1->TASKS_CLEAR = 1;
  48.     NRF_TIMER1->CC[0]       = 2000 * 1000;
  49.     NRF_TIMER1->INTENSET    = TIMER_INTENSET_COMPARE0_Enabled << TIMER_INTENSET_COMPARE0_Pos;
  50.     NRF_TIMER1->SHORTS      = TIMER_SHORTS_COMPARE0_CLEAR_Enabled << TIMER_SHORTS_COMPARE0_CLEAR_Pos;
  51.     NRF_TIMER1->TASKS_START = 1;
  52.  
  53.     while(1)
  54.     {
  55.         if(foobar)
  56.             log("foobar!\r\n");
  57.     }
  58.    
  59.     return 0;
  60. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement