野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8416|回复: 1

小白学习到第九章,有一处看不懂 麻烦大神解答一下

[复制链接]
发表于 2019-4-17 17:25:06 | 显示全部楼层 |阅读模式
本人小白,第一次接触单片机编程和C语言如题,红字不太懂,为什么是左移2位。。麻烦各位大神解答一下哈。。 谢谢了   



    //若currentpin=pos,则找到使用的引脚
      if (currentpin == pos)
      {
                //pinpos的值左移两位(乘以4),因为寄存器中4个寄存器位配置一个引脚
        pos = pinpos << 2;


            //把控制这个引脚的4个寄存器位清零,其它寄存器位不变
        pinmask = ((uint32_t)0x0F) << pos;
        tmpreg &= ~pinmask;




回复

使用道具 举报

发表于 2019-4-18 21:54:28 | 显示全部楼层
写成左移两位,就是为了这个数值乘以4
每4位组一个GPIO_Pin,所以如果循环判断每个GPIO_Pin是否是1,第几个GPIO_Pin是1,那就它配置它的 第几个 X 4 那组bit
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-1 17:32 , Processed in 0.029626 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表