目录

位带概况


位带概况

位操作,简单的理解,可以单独的对一个比特位读和写,51单片机非常常见。类如,51单片机通过关键字sbit来实现位定义,STM32并没有这个关键字,而是通过访问位带别名区(Bit band alias)来实现的。

通过查看《M4内核参考手册》3.4 system address map 可知下图:

M4中2个区域实现了位带,其一为SRAM的最低1MB空间,其二为外设区域的最低1MB空间。

参考3.7 Bit-banding 可知,位带区的一个比特经过膨胀后,虽然变大到4个字节,但是还是LSB才有效。有人会问这不是浪费空间吗,要知道F429的系统总线是32位的,按照4个字节访问的时候是最快的,所以膨胀成4个字节来访问是最高效的。通过指针的形式访问位带别名区地址从而达到操作位带区比特位的效果。

// 把“位带地址+位序号”转换成别名地址的宏
#define BITBAND(addr, bitnum) ((addr & 0xF0000000)+0x02000000+((addr & 0x000FFFFF)<<5)+(bitnum<<2))// 把一个地址转换成一个指针
#define MEM_ADDR(addr) *((volatile unsigned long *)(addr))// 把位带别名区地址转换成指针
#define BIT_ADDR(addr, bitnum) MEM_ADDR(BITBAND(addr, bitnum))

秉火429笔记之七位带操作相关推荐

  1. 秉火429笔记之八 RCC时钟

    目录 1. RCC 作用概述 2. RCC框图剖析-时钟树 3. 编程要点 4. 源码实例 1. RCC 作用概述 RCC :reset clock control 复位和时钟控制器. 设置系统时钟S ...

  2. 秉火429笔记之十八 ETH--以太网

    目录 1. 以太网简介 2.  SMI 接口 (站管理接口) 2.1 SMI帧格式 2.2 SMI 读写操作 3. MII 和 RMII接口 4. MAC 802.3 4.1 MAC 802.3 帧格 ...

  3. 秉火429笔记之十七 SPI--操作FLASH

    目录 1. SPI协议概述 2. STM32 SPI特性及架构 2.1 SPI外设简介 2.2 STM32的SPI架构剖析 2.2.1 通讯引脚 2.2.2 时钟控制逻辑 2.2.3 数据控制逻辑 3 ...

  4. 秉火429笔记之十二 看门狗

    目录 1. 概述 2. 独立看门狗(IWDG) 3. 窗口看门狗(WWDG) 1. 概述 STM32有两个看门狗,一个是独立看门狗,另外一个是窗口看门狗,独立看门狗号称宠物狗,窗口看门狗号称警犬. 一 ...

  5. 秉火429笔记之十 EXTI-外部中断/事件

    目录 1. EXTI 简介 2. EXTI 功能框图 3. 功能点 4. 编码要点 1. EXTI 简介 外部中断/事件控制器(EXTI)管理了控制器的23个中断/事件线.每个中断/事件线都对应有一个 ...

  6. 秉火429笔记之十六 I2C--操作EEPROM

    目录 1. I2C 概述 2. 硬件设计 3. 代码实现 1. I2C 概述 参考该链接,不在赘述:https://blog.csdn.net/XieWinter/article/details/91 ...

  7. 秉火429笔记之十五 DMA--直接存储区访问

    目录 1. 简介 2. 功能 2.1 外设通道 2.2 仲裁器 2.3 FIFO 2.4 存储器端口和外设端口 2.5 编程接口 3. DMA数据配置 1. 简介 直接存储器访问 (DMA) 用于在外 ...

  8. 秉火429笔记之十四 USART--串口通信

    目录 1. 串口通讯协议简介 1.1 物理层 1.2 协议层 2  ST USART 2.1 功能引脚 2.2 重要状态 2.3 编程要点 2.4 代码实例 1. 串口通讯协议简介 串口通讯(Seri ...

  9. 秉火429笔记之九 中断应用概述

    目录 1. 中断类型 2. NVIC 概述 3.  中断优先级 4. 优先级分组 5. 编程要点 1. 中断类型 在此不严格区分中断和异常,即简单的认为中断与异常一个概念. M4 内核搭载了异常响应系 ...

最新文章

  1. 使用JMeter压力测试
  2. TCP/IP详解--第七章
  3. InnerHTML、InnerText、outerHTML、outerText的区别
  4. 在查询语句中使用 NOLOCK 和 READPAST
  5. 安卓进阶系列-07数据库框架(GreenDAO)的使用
  6. ASP.NET Core on K8S学习初探(1)
  7. mac 电脑android环境变量设置,mac上Android环境变量配置
  8. MySQL与Oracle 差异比较之五存储过程Function
  9. 计算机凭证打印格式设置,金蝶软件套打如何设置用KP-J103凭证纸打印凭证
  10. android 8187驱动 win7,RTL8187 无线网卡在win7下的驱动问题
  11. 谈谈《人生七年》这部纪录片
  12. Vue antdv a-select 内容搜索过滤(filterOption)
  13. pytest报错 E ModuleNotFoundError解决办法
  14. 在Coordinatorlayout中使用RecyclerView导致recyclerview最后一个item显示不全的问题
  15. 图像相似算法最全总结
  16. mysql_08_ yum(dnf)安装
  17. 这些Transfomer问题你都会,你就是顶级专家
  18. android icloud云盘,icloud备份恢复到安卓手机(全方面了解iCloud轻松玩转iCloud)
  19. 射线跟踪(递归射线跟踪)
  20. (转载) 如何定义一个号的变量名

热门文章

  1. 计算机突然断电恢复供电后,电脑突然断电的坏处有哪些?
  2. Android 图片选择和拍照(剪辑)及压缩问题 工具类
  3. Unity游戏开发中的向量运算-点乘和叉乘
  4. 股票证券名词解释汇总
  5. Linux系统/etc/fstab文件损坏如何处理
  6. vue 组件名 下划线_团队Vue组件规范
  7. unordered_map详细介绍
  8. 对话框的动画弹出和动画消隐
  9. 云堡垒机和信创堡垒机主要区别讲解
  10. springboot怎样扫描与启动类非同包下也非子包下的类(javaBean)