正点原子程序问题

关注

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

正点原子的一个程序中我看到如下的写法,这样的操作目的是改变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

  • Jing_Wang 发表于 2019-01-15

    你说的这种写法就是按位或,只对你的操作位有效

    举报 评论 0

  • Florrie 发表于 2019-01-17

    你的操作不会影响其他的位,因为是对位单个的操作

    举报 评论 0

我来回答

试用推荐

TLP3547

产品总数:100个  申请人数:178

距离结束时间:

推荐达人 更多>

  • 向悫 向ta提问

    川楠

    一切能用程序解决的问题都不是问题

    在行: 单片机综合应用 硬件设计

  • 靳飞 向ta提问

    汉云

    在路上的Linuxer

    在行: DSP技术 STM32讨论区

  • 徐珂靖 向ta提问

    xukejing

    规格严格,功夫到家

    在行: 开发板综合 Linux 系统

  • 袁建明 向ta提问

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

    日知其所亡

    在行: 嵌入式 Linux 系统

  • 张峰 向ta提问

    光学总工

    用心工作,用心生活

    在行: 嵌入式 Linux 系统

完成答题
赶快去开启您的宝箱吧