📄 button.c
字号:
// filename button.c// connect a button to DIO pin 1 and ground// blinks green and red led on the 9302 board when button is pressed//// compile arm-linux-gcc -o button button.c//#include<unistd.h>#include<sys/types.h>#include<sys/mman.h>#include<stdio.h>#include<fcntl.h>#include<string.h>int main(int argc, char **argv){ volatile unsigned int *PEDR, *PEDDR, *PBDR, *PBDDR, *GPIOBDB; int i; unsigned char state; unsigned char *start; int fd = open("/dev/mem", O_RDWR); start = mmap(0, getpagesize(), PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0x80840000); PBDR = (unsigned int *)(start + 0x04); // port b PBDDR = (unsigned int *)(start + 0x14); // port b direction register PEDR = (unsigned int *)(start + 0x20); // port e data PEDDR = (unsigned int *)(start + 0x24); // port e direction register GPIOBDB = (unsigned int *)(start + 0xC4); // debounce on port b *PBDDR = 0xf0; // upper nibble output, lower nibble input *PEDDR = 0xff; // all output (just 2 bits) *GPIOBDB = 0x01; // enable debounce on bit 0 state = *PBDR; // read initial state while (state & 0x01) { // wait until button goes low state = *PBDR; // remember bit 0 is pulled up with 4.7k ohm } // blink 5 times, sleep 1 second so it's visible for (i = 0; i < 5; i++) { *PEDR = 0xff; sleep(1); *PEDR = 0x00; sleep(1); } close(fd); return 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -