• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

STM32的端口高低位操作问题

Linux小学童 2020-07-27 浏览量:975

STM32的GPIO口,单独操作低8位,不改变高8位的值,如何做。

另外,如何单独操作每一位。看C语言有个位域操作,针对STM32该如何操作。

0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • stm32在c语言编程时是支持位操作的、位域操作的。

    不过单个gpio口作为普通IO时是没有低8位、高8位之类的说法的,它只有1位

    如果是多个gpio一起并行输出才有这样的说法

    这时,其实单个gpio还是只有1位的,也可以用前面提到的分别1位置位设置的办法进行设置。

    当然,如果有好的数据结构处理,也可以一次性设置多位,可以采用位运算,对某个变量低8位进行设置,不改变高8位主要过程是

    A=A&0xFF00;// 低8位置0,高8位保持不变

    A=A | 0xAB;// 这里0xAB就是要给低8位置位的值,你需要改成你自己的值


    • 发布于 2020-07-27
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:4
  • 需要分2步操作,先低8位清零GPIOA->BRR=0xff,第二步赋值GPIOA->BSRR=data&0xff这样就行了
    • 发布于2020-07-27
    • 举报
    • 评论 0
    • 0
    • 0

  • 建议使用库函数编程,里面有你所提问的专用函数
    • 发布于2020-07-27
    • 举报
    • 评论 0
    • 0
    • 0

  • C语言的位操作一般用&=~与|=来实现,与运算的特点是跟0 进行与运算会归0,跟1进行会保持原有值,或运算则是与0取或保持原有值,与1取或会被置位
    • 发布于2020-07-31
    • 举报
    • 评论 0
    • 0
    • 0

  • 先把高8位与操作, &0xff00,把低8位清了,再用或 ,|0x00xx,最后的xx是你要配置的数据
    • 发布于2020-08-06
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

STM32的端口高低位操作问题