STM32学习——位带区的理解
位带简介
位操作就是可以单独的对一个比特位读和写,类似与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学习——位带区的理解相关推荐
- STM32位带区和位带别名区的浅谈
1.首先谈下为什么要使用位带? 在学习51单片机时就已经使用过位操作,比如使用sbit对单片机IO口的定义,但是STM32中并没有这类关键字,而是通过访问位带别名区来实现,即通过将每个比特位膨胀成一个 ...
- STM32的位带操作
1. 什么是位带操作? 学习 51 单片机的时候就使用过位操作,通过关键字 sbit 对单片机IO口进行位定义.但STM32没有这样的关键字,于是便要通过访问位带别名区的方式来实现.即:将每一位膨胀成 ...
- 对位带操作的理解和应用
嵌入式_对位带操作的理解和应用 最近返回去研究stm32,看到STM32部分空间支持了位带操作,就是可以使用普通的加载/存储指令来对单一的比特进行读写.所以写篇日志记录以下对于位带操作的理解,本文参考 ...
- 【STM32】位带原理分析和应用
00. 目录 文章目录 00. 目录 01. 位带概述 02. 位带操作 03. 位带C语言实现 04. 应用示例一 05. 应用示例二 06. 附录 07. 声明 01. 位带概述 位带操作简单的说 ...
- 我对STM32所用位带操作宏的超详细剖析、优势分析及应用推广探索研究(持续更新,欢迎讨论交流)
在原子例程的sys.h中,使用宏定义建立了位带操作的基础, 使得操作IO端口可以像51一样实现位操作. 其实深入了解了位带操作的原理,几乎就可以实现对STM32所有外设寄存器的访问, 极端情况下,什么 ...
- STM32 的 “位带”操作Bit-banding--学习笔记
利用2个32MB大小的"虚拟"内存空间实现对2个1MB大小的物理内存空间进行"位"的置位和清除操作. 这样就可以有效地对设备寄存器和位于SRAM中的数据变量进行 ...
- 【STM32】标准库与HAL库对照学习教程六--位带操作
[STM32]标准库与HAL库对照学习教程六--位带操作 一.前言 二.准备工作 三.位带介绍 1.位带操作 2.STM32位带及位带别名区域 四.位带区与位带别名区地址转换 五.GPIO的位带操作 ...
- STM32笔记 GPIO介绍及IO口操作 STM32F0 利用C语言位域实现仿位带操作
文章目录 GPIO简介 工作方式 相关寄存器介绍 IO 操作步骤 IO口三种操作细解 附录:C语言相关 偏移地址与绝对地址 GPIO简介 GPIO:每个连接到I/O总线上的设备都有自己的I/O地址集, ...
- STM32 进阶教程 8 - 位带操作
前言 有过51单片机开发经历的朋友应该都对51的IO口或一些特殊寄存器可以直接按位操作的方式不陌生吧,那么在stm32中有没有类似的操作呢,答案是肯定的,本节将给大家介绍如何在STM32中实现位带操作 ...
最新文章
- 我的日常学习笔记 18.05.08(Vue自定义事件)
- WordPress 2.9.2 使用感受
- 【设计模式】四:开放-封闭原则
- C语言文件操作解析(二)【转载】
- only SOY MILK IS NOT ENOUGH FOR BREAKFAST
- [转载]当代中国建筑设计百家名院名单
- 第二章:Java基本语法
- js(Dom+Bom)第五天(1)
- 前端学习(969):移动端300ms延时问题
- 一份超详细的MySQL高性能优化实战总结
- 机器学习与深度学习基本概念 学习笔记
- PHP(3):PHP读取Excel文件的记录-方法1
- linux 小度 驱动_arm-linux移植MT7601Uusb无线网卡(小度wifi,360随身WIFI 2代)
- SiO2 介孔二氧化硅纳米颗粒的明胶包裹/二氧化硅杂化凝胶固定化醇脱氢酶/白蛋白和壳聚糖包裹的二氧化硅微球/二氧化硅包覆的量子点荧光编码微球
- Elasticsearch 6.X xpack安装使用详解(试用)
- 服务器重启后samba启动不了,提示stop: Unknown instance: smbd start/running, process 76585
- 尚学堂Java第七章编码题
- 自动驾驶(十四)---------车道线检测
- AE基础教程(7)——第7章 区域显示,透明网格
- 设置允许从网络访问计算机的用户账户(加入guest组),网络共享