代码编织梦想

目录

 位带概况


 位带概况

位操作,简单的理解,可以单独的对一个比特位读和写,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))

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/XieWinter/article/details/89647101

stm32笔记2:建库操作之点亮led_典型的博客-爱代码爱编程

秉火系列视频之F429开发板————挑战者 侵删 /**新建工程模板 建库之点亮LED灯 **/ #include "stm32f4xx.h" //总线 #define PERIPH_BASE ((unsigned int)0x40000000) #define AHB1PERIPH_BASE (PERIPH_BASE+0x000200

μc/os-iii源码阅读笔记之任务调度_鹦哥绿战袍inside的博客-爱代码爱编程

参考资料: 基于Keil MDK 平台在cortex-M3 内核MCU 评估板上测试的μC/OS-Ⅲ源码 《μC/OS-III 应用开发指南》 秉火 《嵌入式实时操作系统μCOS-II原理及应用》 任哲编著 《STM32中文参考手册》 《STM32F10x Cortex-M3 programming manual》 《ARM® Compiler

秉火429笔记之十一 systick--滴答定时器_专业游手好闲的博客-爱代码爱编程

目录 1. 概述 2. 寄存器说明 3. 编程要点 4. 实例代码 SysTick—系统定时器是属于CM4内核中的一个外设,内嵌在NVIC中。系统定时器是一个24bit的向下递减的计数器。所有基于CM4内核的单片机都具有这个系统定时器,使得软件在CM4单片机中可以很容易的移植。系统定时器一般用于操作系统,用于产生时基,维持操作系统的心跳。 2

秉火429笔记之十二 看门狗_专业游手好闲的博客-爱代码爱编程

目录 1. 概述 2. 独立看门狗(IWDG) 3. 窗口看门狗(WWDG) 1. 概述 STM32有两个看门狗,一个是独立看门狗,另外一个是窗口看门狗,独立看门狗号称宠物狗,窗口看门狗号称警犬。 一般情况下,使用频次较高是独立看门狗,也即是通常意义的看门狗。 2. 独立看门狗(IWDG) 一个12位的递减计数器,最大值为0XFFF,当计

位带操作 学习笔记_宇智波 · 赵四的博客-爱代码爱编程

位带操作:位操作就是可以单独的对一个比特位读和写,这个在 51 单片机中非常常见。 51 单片机中通过关键字 sbit 来实现位定义,STM32 没有这样的关键字,而是通过访问位带别名区来实现。 在 STM32 中,有两个地

秉火429笔记之十四 usart--串口通信_专业游手好闲的博客-爱代码爱编程

目录 1. 串口通讯协议简介 1.1 物理层 1.2 协议层 2  ST USART 2.1 功能引脚 2.2 重要状态 2.3 编程要点 2.4 代码实例 1. 串口通讯协议简介 串口通讯(Serial Communication)是一种设备间常用的串行通讯方式,因为简单便捷,大部分电子设备都支持该通讯方式,电子工程师在调试设备时也

秉火429笔记之十五 dma--直接存储区访问_专业游手好闲的博客-爱代码爱编程_dma在fifo与sram

目录 1. 简介 2. 功能 2.1 外设通道 2.2 仲裁器 2.3 FIFO 2.4 存储器端口和外设端口 2.5 编程接口 3. DMA数据配置 1. 简介 直接存储器访问 (DMA) 用于在外设与存储器之间以及存储器与存储器之间提供高速数据传 输。可以在无需任何 CPU 操作的情况下通过 DMA 快速移动数据。这样节省的 CP

秉火429笔记之十六 i2c--操作eeprom_专业游手好闲的博客-爱代码爱编程

目录 1. I2C 概述 2. 硬件设计 3. 代码实现 1. I2C 概述 参考该链接,不在赘述:https://blog.csdn.net/XieWinter/article/details/91903678 介于ST I2C接口相对不好用,在此直接采用模拟I2C方式操作设备 2. 硬件设计   特征:兼容400KHZ,百万次写

秉火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. 硬件设计 5. 软件设计 1. SPI协议概述 关于SPI协议不做赘述,见详解。 https://blog.c

fatfs文件系统笔记--r0.13c_专业游手好闲的博客-爱代码爱编程

目录 1. FatFs文件系统简介 1.1 FatFs的目录结构 1.2  FatFs帮助文档 1.3  FatFs源码 2.  FatFs 文件系统的移植 2.1 FatFs 分层体系 2.1 FatFs 移植步骤 2.1.1 添加 FatFs 源码到工程 2.2 FatFs主要功能配置点 3. FatFs模块应用说明 4. Fat

秉火429笔记之十八 eth--以太网_专业游手好闲的博客-爱代码爱编程

目录 1. 以太网简介 2.  SMI 接口 (站管理接口) 2.1 SMI帧格式 2.2 SMI 读写操作 3. MII 和 RMII接口 4. MAC 802.3 4.1 MAC 802.3 帧格式  4.2 MAC数据包发送和接收 4.2.1 MAC数据包发送 4.2.2 MAC数据包接收 4.2.3 MAC过滤 5. 官方例

洋桃开发板笔记(五 ) flash闪存的使用_mannixcsdn的博客-爱代码爱编程

Flash闪存的使用 杜洋工作室 www.DoYoung.net 洋桃电子 www.DoYoung.net/YT 在此声明一下所有代码均为 杜洋工作室 的不允许复制,转发等,本人只是在此程序上进行理解和注释。

洋桃开发板笔记(七 ) 初步了解dma——直接存储器访问_mannixcsdn的博客-爱代码爱编程

初步了解DMA——直接存储器访问 杜洋工作室 www.DoYoung.net 洋桃电子 www.DoYoung.net/YT 在此声明一下所有代码均为杜洋工作室的不允许复制,转发以及在商业上的行为等,本人

秉火429笔记之十 exti-爱代码爱编程

目录 1. EXTI 简介 2. EXTI 功能框图 3. 功能点 4. 编码要点 1. EXTI 简介 外部中断/事件控制器(EXTI)管理了控制器的23个中断/事件线。每个中断/事件线都对应有一个边沿检测器,可以实现输入信号的上升沿检测和下降沿的检测。EXTI可以实现对每个中断/事件线进行单独配置,可以单独配置为中断或者事件,以及触发事