位带简介

位操作就是可以单独的对一个比特位读和写,类似与51中sbit定义的变量,stm32中通过访问位带别名区来实现位操作的功能
STM32中有两个地方实现了位带,一个是SRAM,一个是片上外设。

个人理解

(1)位带本质上是一块地址区(例如每一位地址位对应一个寄存器)映射到另一片地址区(实现每一位地址位对应一个寄存器中的一位),该区域就叫做位带别名区,将每一位膨胀成一个32位的字。
(2)位带区的4个字节对应实际寄存器或内存区的一个位,虽然变大到4个字节,但实际上只有最低位有效(代表0或1)

映射过程

要设置0x2000 0000这个字节的第二个位bit2为1,使用位带操作的步骤有:
1、将1写入位 带别名区对应的映射地址(即0x22000008,因为1bit对应4个byte);
2、将0x2000 0000的值 读取到内部的缓冲区(这一步骤是内核完成的,属于原子操作,不需要用户操作);
3、将bit2置1,再把值写 回到0x2000 0000(属于原子操作,不需要用户操作)。

看一段代码

其中A是我们想要操作的位所在的字节地址(原地址),0x40000000是外设位带区的起始地址,0x42000000时外设位带别名区的起始地址。
一个字节有8位,每一位膨胀后是4个字节,所以84;
n(0<=n<=7)是位序号,所以*4;

对于位带区,只是理解,用的并不普遍。。。
Reference:
https://www.cnblogs.com/leo0621/p/9494290.html
野火教程

STM32学习——位带区的理解相关推荐

  1. STM32位带区和位带别名区的浅谈

    1.首先谈下为什么要使用位带? 在学习51单片机时就已经使用过位操作,比如使用sbit对单片机IO口的定义,但是STM32中并没有这类关键字,而是通过访问位带别名区来实现,即通过将每个比特位膨胀成一个 ...

  2. STM32的位带操作

    1. 什么是位带操作? 学习 51 单片机的时候就使用过位操作,通过关键字 sbit 对单片机IO口进行位定义.但STM32没有这样的关键字,于是便要通过访问位带别名区的方式来实现.即:将每一位膨胀成 ...

  3. 对位带操作的理解和应用

    嵌入式_对位带操作的理解和应用 最近返回去研究stm32,看到STM32部分空间支持了位带操作,就是可以使用普通的加载/存储指令来对单一的比特进行读写.所以写篇日志记录以下对于位带操作的理解,本文参考 ...

  4. 【STM32】位带原理分析和应用

    00. 目录 文章目录 00. 目录 01. 位带概述 02. 位带操作 03. 位带C语言实现 04. 应用示例一 05. 应用示例二 06. 附录 07. 声明 01. 位带概述 位带操作简单的说 ...

  5. 我对STM32所用位带操作宏的超详细剖析、优势分析及应用推广探索研究(持续更新,欢迎讨论交流)

    在原子例程的sys.h中,使用宏定义建立了位带操作的基础, 使得操作IO端口可以像51一样实现位操作. 其实深入了解了位带操作的原理,几乎就可以实现对STM32所有外设寄存器的访问, 极端情况下,什么 ...

  6. STM32 的 “位带”操作Bit-banding--学习笔记

    利用2个32MB大小的"虚拟"内存空间实现对2个1MB大小的物理内存空间进行"位"的置位和清除操作. 这样就可以有效地对设备寄存器和位于SRAM中的数据变量进行 ...

  7. 【STM32】标准库与HAL库对照学习教程六--位带操作

    [STM32]标准库与HAL库对照学习教程六--位带操作 一.前言 二.准备工作 三.位带介绍 1.位带操作 2.STM32位带及位带别名区域 四.位带区与位带别名区地址转换 五.GPIO的位带操作 ...

  8. STM32笔记 GPIO介绍及IO口操作 STM32F0 利用C语言位域实现仿位带操作

    文章目录 GPIO简介 工作方式 相关寄存器介绍 IO 操作步骤 IO口三种操作细解 附录:C语言相关 偏移地址与绝对地址 GPIO简介 GPIO:每个连接到I/O总线上的设备都有自己的I/O地址集, ...

  9. STM32 进阶教程 8 - 位带操作

    前言 有过51单片机开发经历的朋友应该都对51的IO口或一些特殊寄存器可以直接按位操作的方式不陌生吧,那么在stm32中有没有类似的操作呢,答案是肯定的,本节将给大家介绍如何在STM32中实现位带操作 ...

最新文章

  1. 我的日常学习笔记 18.05.08(Vue自定义事件)
  2. WordPress 2.9.2 使用感受
  3. 【设计模式】四:开放-封闭原则
  4. C语言文件操作解析(二)【转载】
  5. only SOY MILK IS NOT ENOUGH FOR BREAKFAST
  6. [转载]当代中国建筑设计百家名院名单
  7. 第二章:Java基本语法
  8. js(Dom+Bom)第五天(1)
  9. 前端学习(969):移动端300ms延时问题
  10. 一份超详细的MySQL高性能优化实战总结
  11. 机器学习与深度学习基本概念 学习笔记
  12. PHP(3):PHP读取Excel文件的记录-方法1
  13. linux 小度 驱动_arm-linux移植MT7601Uusb无线网卡(小度wifi,360随身WIFI 2代)
  14. SiO2 介孔二氧化硅纳米颗粒的明胶包裹/二氧化硅杂化凝胶固定化醇脱氢酶/白蛋白和壳聚糖包裹的二氧化硅微球/二氧化硅包覆的量子点荧光编码微球
  15. Elasticsearch 6.X xpack安装使用详解(试用)
  16. 服务器重启后samba启动不了,提示stop: Unknown instance: smbd start/running, process 76585
  17. 尚学堂Java第七章编码题
  18. 自动驾驶(十四)---------车道线检测
  19. AE基础教程(7)——第7章 区域显示,透明网格
  20. 设置允许从网络访问计算机的用户账户(加入guest组),网络共享

热门文章

  1. matplotlib绘制子图,自定义子图大小并分别绘图
  2. linux永久启动服务命令,Linux(CentOS)用service命令启动任意服务
  3. 康力电梯开门不关门 服务器显示开门键动作,康力电梯现场调试后常见问题及排除...
  4. lua --- 表操作
  5. python3 类的相关内容
  6. 内嵌tomcat启动速度慢
  7. 当Java代码遇上抽象、重载加重写,一切都不美好了
  8. 字符串截取mysql
  9. [教程]微信官方开源UI库-WeUI使用方法【申明:来源于网络】
  10. 吐槽:Lambda表达式