单片机的位操作

本文介绍了单片机编程中常见的位操作,包括与操作和或操作的应用。与操作用于置零或保留特定位,如通过与0进行屏蔽实现置零;或操作用于置一,结合移位可以方便地设置寄存器中的位,如GPIO的BSRR寄存器设置位为1。

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

最近在学习单片机,而在单片机里,比较常见的一个操作就是移位操作,我们经常需要对寄存器里的位进行操作,比如置零或者是置一。

首先,我们来说一下与操作&。与操作简单来说就是,任何数与上0都为0,只有当两个数都为1时,与的结果才是1。所以根据与操作的特性,我们可以对想要的位进行屏蔽或者是保留。如果我们想要进行屏蔽操作,也可以说是置零操作,那我们就可以把需要的位&0,那么这一位自然就变成了0,例如我们想要将0000 1111的前两位置零,那么我们可以这样操作,将0000 1111 & 0000 0011,那么结果就变成了0000 0011。如果我们想要对需要的位进行保留,那我们就可以把需要的位&1,那么这一位的数自然会不变,例如我们想要保留1110 1011的后四位,那么我们可以这样操作,将1110 1011 & 0000 1111,那么结果就变成了0000 1011。

接下来我们来看一下或操作|。或操作简单来说就是,任何数或上1都为1,只有当两个数都为0的时候,或的结果才是0。所以根据或操作的特性,我们可以对特定的位进行置一操作。例如,我们想要把1000 1111中的0全部置一,那么我们可以这样操作,将1000 1111 | 0111 0000,那么结果就是1111 1111。

在单片机中,我们经常进行移位操作,例如我们想要将BSRR 寄存器的第 pinpos 位设置为 1。那么,我们可以这样操作。GPIO->BSRR = (((uint32_t)0x01)<<pinpos);。那么这样就可以将我们需要的位进行置一操作。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值