对stm32寄存器进行位操作

本文详细介绍了如何对STM32的寄存器进行位操作,包括复位清零操作(&=~)和置1操作(|=)。通过实例解析了位运算符如&、|、~、<<、>>的用法,并展示了如何对GPIOB_MODER和GPIOB_CRL寄存器进行位操作,强调实际操作中先清零再置位的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

位运算符

& 按位与
| 按位或
^ 按位异或 (相比较的两位不相同时,才输出1)
~ 按位取反
<<左移
>>右移

对寄存器位操作

复位清零操作:&=~

例子1:GPIOB_MODER&=~(3<<(2*9))

1.当前GPIOB_MODER寄存器中的数据未知,设32位数据为:
xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx
2.系统先执行(3<<(29)),也就是将0011(默认32位),向左移动18位。
整体左移18位后结果:
0000 0000 0000 11xx xxxx xxxx xxxx xxxx
32位寄存器中,高18位被移出,由位移产生的空位系统自动补入0(x=0)。
3.将上述结果按位取反,得到
1111 1111 1111 0011 1111 1111 1111 1111
4.最后执行“GPIOB_MODER&~(3<<(2
9)”,并将值赋值给“GPIOB_MODER寄存器

xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx
& 1111 1111 1111 0011 1111
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值