zoukankan      html  css  js  c++  java
  • GPIO—位带操作

    GPIO—位带操作
    本章参考资料:《 STM32F4xx 中文参考手册》存储器和总线构架章节、 GPIO 章节,
    Cortex®-M4 内核编程手册》 2.2.5 Bit-banding。学习本章时,配套这些参考资料学习效果
    会更佳。 

    位操作就是可以单独的对一个比特位读和写,这个在 51 单片机中非常常见。 51 单片
    机中通过关键字 sbit 来实现位定义, F429 中没有这样的关键字,而是通过访问位带别名区
    来实现。
    F429 中,有两个地方实现了位带,一个是 SRAM 区的最低 1MB 空间,另一个是外
    设区最低 1MB 空间。这两个 1MB 的空间除了可以像正常的 RAM 一样操作外,他们还有
    自己的位带别名区,位带别名区把这 1MB 的空间的每一个位膨胀成一个 32 位的字,当访
    问位带别名区的这些字时,就可以达到访问位带区某个比特位的目的。 

    n这个位号,代表你想操作的位,比如GPIOH_PIN_10,此时n=10;在零死角中写的0<=n<=8有错误。

     

    为什么是低五位有效?因为位带区的地址偏移最大0XFFFFF0X400 00000----0X400 FFFFF);相减最大就这么多,这样可以巧妙地把两个公式化成一个。

    Stm32怎么知道什么时候是位带操作的呢?因为硬件地址决定了芯片的功能,当你根据芯片的硬件设计,在对应地址操作的时候,就可以达到芯片设定的效果。

  • 相关阅读:
    Swift基础学习
    APP的线程安全
    LintCode-O(1) Check Power of 2
    LintCode-Maximum Subarray Difference
    LintCode-Subarray Sum Closest
    LintCode-Rehashing
    Lintcode-Max Tree
    LintCode-Interleaving Positive and Negative Numbers.
    LintCode-Topological Sorting
    LintCode-Rotate String
  • 原文地址:https://www.cnblogs.com/yangguang-it/p/6733873.html
Copyright © 2011-2022 走看看