18 #define _POSIX_C_SOURCE 199309L
26 #include <sys/timeb.h>
29 #define BCM2708_PERI_BASE 0x20000000
30 #define GPIO 0x00200000
31 #define TIMER_CONTROL 0x00003000
32 #define ONE_MHZ_COUNTER 0x00000004
34 #define PAGE_SIZE (4*1024)
35 #define BLOCK_SIZE (4*1024)
38 #define INP_GPIO(g) *(gpio+((g)/10)) &= ~(7<<(((g)%10)*3))
39 #define OUT_GPIO(g) *(gpio+((g)/10)) |= (1<<(((g)%10)*3))
40 #define SET_GPIO_ALT(g,a) *(gpio+(((g)/10))) |= (((a)<=3?(a)+4:(a)==4?3:2)<<(((g)%10)*3))
42 #define GPIO_SET *(gpio+7)
43 #define GPIO_CLR *(gpio+10)
45 #define GET_GPIO(g) (*(gpio+13)&(1<<g))
47 #define GPIO_PULL *(gpio+37)
48 #define GPIO_PULLCLK0 *(gpio+38)
52 #define NrOfSamples 500
57 volatile uint32_t *gpio;
58 volatile uint32_t *Timer;
63 if ((fd = open(
"/dev/mem", O_RDWR|O_SYNC) ) < 0)
65 printf(
"can't open /dev/mem \n");
72 fprintf( stderr,
"201608281433 mmap() failed.\n");
80 fprintf( stderr,
"201608281434 mmap() failed.\n");
94 TimeStamp[i] = *Timer - StartTime;
101 printf(
"%" PRIu32
",", TimeStamp[i] );
#define BCM2708_PERI_BASE