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

简介

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

寄存器写操作

多个寄存器位操作

//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);
		
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

路过的大熊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值