简介
寄存器的操作主要是读操作以及写操作。
寄存器写操作
多个寄存器位操作
//GPIO (LED)
#define GPIO_CON (*(volatile unsigned int*)(0xE0200280))
GPIO_CON &= 0XFFFFF8FF; //需要修改D8~D10位,确保D8~D10位为0,其他位不变(只有为0才能确保能正确修改该位的值)
GPIO_CON |= 0X00000100; //更改D8~D10状态 D8~D10写为001配置为GPIO功能
单个寄存器位操作
#define GPIO_CON (*(volatile unsigned int*)(0xE0200280))
GPIO_CON &= ~(1<<7); //D7位置1取反,相当于置0(这样做的目的是为了保证别的位不受影响,只改变需要改变的位)
GPIO_CON |= (1<<7); //将第7位设置为1
寄存器读操作
#define GPIO_CON (*(volatile unsigned int*)(0xE0200280))
GPIO_CON = 0xaa;
printf("reginst====%d======\n", GPIO_CON);
//分别取第8、7、6、5bit位
int a1 = (GPIO_CON & 0x80) >> 7;
int b1 = (GPIO_CON & 0x40) >> 6;
int c1 = (GPIO_CON & 0x20) >> 5;
int d1 = (GPIO_CON & 0x10) >> 4;
int e1 = (GPIO_CON & 0x08) >> 3;
int f1 = (GPIO_CON & 0x04) >> 2;
int g1 = (GPIO_CON & 0x02) >> 1;
int h1 = (GPIO_CON & 0x01) >> 1;
//获取1-4bit位
int i1 = (GPIO_CON & 0x0f);
printf("bit8====%d======\n", a1);
printf("bit7====%d======\n", b1);
printf("bit6====%d======\n", c1);
printf("bit5====%d======\n", d1);
printf("bit4====%d======\n", e1);
printf("bit3====%d======\n", f1);
printf("bit2====%d======\n", g1);
printf("bit1====%d======\n", h1);
printf("bit1-4bit====%d======\n", i1);