Advertisement
Guest User

Untitled

a guest
Mar 20th, 2019
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.01 KB | None | 0 0
  1. // RGB LED at pins 22(G), 23(R), and 24(B)
  2.  
  3. // Addresses to registers, tasks, and events for the clock
  4. #define CLOCK_BASE_ADDRESS 0x40000000
  5. #define TASKS_HFCLKSTART_OFFSET 0x000
  6. #define TASKS_LFCLKSTART_OFFSET 0x008
  7. #define EVENTS_HFCLKSTARTED_OFFSET 0x100
  8. #define EVENTS_LFCLKSTARTED_OFFSET 0x104
  9. #define LFCLKSRC_ADDRESS_OFFSET 0x518
  10.  
  11. // Addresses to registers, tasks, and events for the GPIO
  12. #define GPIO_BASE_ADDRESS 0x50000000
  13. #define OUTSET_ADDRESS_OFFSET 0x508 // 1's written to this register set corresponding pins (HIGH). 0's have no effect.
  14. #define DIRSET_ADDRESS_OFFSET 0x518 // 1's written to this register setup corresponding pins as OUTPUT. 0's have no effect.
  15.  
  16. volatile unsigned long * startHFClk_reg = (volatile unsigned long *)CLOCK_BASE_ADDRESS + TASKS_HFCLKSTART_OFFSET;
  17. volatile unsigned long * HFClkStarted_reg = (volatile unsigned long *)CLOCK_BASE_ADDRESS + EVENTS_HFCLKSTARTED_OFFSET;
  18. volatile unsigned long * LFClkSource_reg = (volatile unsigned long *)CLOCK_BASE_ADDRESS + LFCLKSRC_ADDRESS_OFFSET;
  19. volatile unsigned long * startLFClk_reg = (volatile unsigned long *)CLOCK_BASE_ADDRESS + TASKS_LFCLKSTART_OFFSET;
  20. volatile unsigned long * LFClkStarted_reg = (volatile unsigned long *)CLOCK_BASE_ADDRESS + EVENTS_LFCLKSTARTED_OFFSET;
  21.  
  22. volatile unsigned long * setupOutputs_reg = (volatile unsigned long *)GPIO_BASE_ADDRESS + DIRSET_ADDRESS_OFFSET;
  23. volatile unsigned long * setPins_reg = (volatile unsigned long *)GPIO_BASE_ADDRESS + OUTSET_ADDRESS_OFFSET;
  24.  
  25. void main(void){
  26.  
  27. *startHFClk_reg = 0x01; // Start external 64 MHz crystal oscillator
  28. while(!HFClkStarted_reg){}
  29. *LFClkSource_reg = 0x01; // LF oscillator source = external xtal
  30. *startLFClk_reg = 0x01; // Start external 32.768 kHz crystal oscillator
  31. while(!LFClkStarted_reg){}
  32.  
  33. *setupOutputs_reg = 0x01C00000; // Make pins 22, 23, and 24 OUTPUT
  34.  
  35. for(;;){
  36. *setPins_reg = 0x00400000; // Make pin 22 HIGH
  37. }
  38. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement