当前位置:网站首页>mcu常用寄存器位操作方式汇总

mcu常用寄存器位操作方式汇总

2022-06-23 22:18:00 路过的小熊~

简介

寄存器的操作主要是读操作以及写操作。

寄存器写操作

多个寄存器位操作

//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);
		
原网站

版权声明
本文为[路过的小熊~]所创,转载请带上原文链接,感谢
https://blog.csdn.net/qq_32348883/article/details/125424617