正点原子程序问题

关注

单片机 STM32 我是假管    2018-12-05   |   浏览量 29  

正点原子的一个程序中我看到如下的写法,这样的操作目的是改变GPIO_Pin_11引脚的方向,但是这个写应该会影响到其他同一端口上的引脚工作模式吧?

QQ截图20181205205917.jpg

全部回答

  • lsh019 发表于 2018-12-06

    不会的啊,为什么会影响到

    前面半句是&=  先与后赋值   就是只有12-15被置零   

    后半句是|=   置一某特定位   就像8   1000  左移那么只是对12-15重新赋值     3   0011同样

    建议你去看下   |=  &=  的使用  类似的还有 &=~   ^=   

    回答点赞:   赤心木zqw 举报 评论 1

  • dreamadmirer 发表于 2018-12-06

    不会的,这段代码的意思是:前面的&运算是将CRH寄存器中GPIO_Pin_11引脚的相应控制位置0,后面的 | 运算是用来改变CRH寄存器中GPIO_Pin_11引脚的相应控制位的值,以设置该IO口的工作模式。

    下面那句类似。

    举报 评论 0

  • 赤心木zqw 发表于 2018-12-06

    这样是对特定位的操作,C语言中经常用这种按位与按位或的方式实现对特定位的改写而不影响其他位。

    这语句的解读是第一个&操作将CRH Pin11位清0,第二个|操作将特定的值写到pin11位上,左移12位是为了将8或者3移到Pin11的这个位置上,输入是8,输出是3,具体可以参考正点原子寄存器版本对着GPIO配置的说明。

    举报 评论 0

  • Spirit 发表于 2018-12-06

    不会影响

    前面的与运算,因为其它位都是F,保证了其它引脚的配置不变,仅仅清除11脚的配置

    后面的或运算,其它位都是0,也不会影响其它引脚。

    举报 评论 0

  • 与梦说心事 发表于 2018-12-06

    不会影响的,这个就是先要操作的那一位清零,在重新赋值

    举报 评论 0

  • 这是经国 发表于 2018-12-06

    不会的 ,这里使用上位与与位或的,

    举报 评论 0

  • chen0000009 发表于 2018-12-06

    不会,这里用了&=和|=,这种写法就是位操作,不影响其它位的

    举报 评论 0

我来回答

试用推荐

ROC-RK3399-PC六核64位高性能主板

产品总数:3个  申请人数:44

距离结束时间:

推荐达人 更多>

  • 王奕 向ta提问

    Eagleson

    在学习FPGA的道路上 我们一起成长吧!

    在行: FPGA/CPLD

  • 靳飞 向ta提问

    汉云

    在路上的Linuxer

    在行: DSP技术 Linux 系统 STM32讨论区 PIC单片机 PCB技术/设计/定制

  • Angel Cherry 向ta提问

    MOP

    用愛和熱忱寫好每一行Code

    在行: FPGA/CPLD Linux 系统 热门单片机

  • 徐珂靖 向ta提问

    xukejing

    Linux系统 、热门开发板

    在行: Linux 系统

  • 袁建明 向ta提问

    河北博联科技有限公司 研发部经理

    日知其所亡

    在行: Linux 系统 灵动微MCU 电源技术

完成答题
赶快去开启您的宝箱吧
×
恭喜您成功领取锦鲤卡
幸运锦鲤将在12月28日晚8点的直播中公布
敬请期待...
确定
12月问答积分兑换板卡出炉