STM32学习笔记(1):位带操作(Bit_band Operations)

本文介绍了STM32的位带操作,仅适用于Cortex-M3和Cortex-M4(F)内核处理器。位带操作通过位带别名区实现对位带区单个数据位的访问,涉及片上SRAM和外设的位带地址重映射。文章详细阐述了位带别名区的计算方法,并提供了C程序实现位寻址的宏定义。
摘要由CSDN通过智能技术生成

注意:本文中关于STM32的位带操作原理只适用于Cortex-M3和Cortex-M4(F)内核处理器,Cortex-M系列的其他内核处理器可能不支持位段操作(如Cortex-M0内核处理器就不支持位段操作),详情请参考相关内核处理器的指南或技术参考手册(TRM)。
1、位带操作
CPU不能直接对位带区中的单个数据位位寻址,只能通过对位带别名区的访问(或读/写)实现对位带区单个数据位的访问(或读/写),这种操作被称为位带操作。Cortex-M3和Cortex-M4(F)内核处理器预定义了2个这样的存储器区域,分别位于SRAM的头1MB和片上外设区域的头1MB。详情参考Cortex-M3和Cortex-M4内核处理器的存储器映射,如图1所示。
注意:MCS-51核单片机支持直接位寻址。MCS-51核汇编指令集中有专门的汇编指令用于对可位寻址的存储器单元位寻址,而支持51核的C编译器提供了增强C语言对硬件控制的扩展类型关键字(如sbit)用于在C程序中定义位操作变量。并且和其他编译器一样,C编译器提供的51核MCU头文件中对存储器中的特殊功能寄存器(即存储器映射寄存器)做了封装,以便将寄存器名作为变量在程序中直接使用。C语言允许将局部变量的值放在CPU中的寄存器中,所以若C程序中用关键字register声明一个变量为内核寄存器变量,那么这个变量的值将直接存储到处理器内核中的寄存器中,需要时CPU直接从内核寄存器中取出参加运算,由于CPU对内核寄存器的存取速度远高于对内存的存取速度,所以这样将提高程序的执行效率。其实如今的编译器优化后,CPU会将内存中的变量值实时copy一份暂存在处理器内核寄存器中以便快速对内存存取
位带</

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值