0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

关于使用GD32 MCU实现位带操作的指南

GD32MCU 来源:djl 2019-10-22 08:49 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

MCS-51单片机可以简单的将P1口的第2位独立操作,如P1.2=0;P1.2=1,就是这样把P1口的第三个脚(BIT2)置0置1。对于32位ARM MCU 我们可以像51单片机一样单独的对某个端口的某一个IO单独操作吗?答案是可以的。并且这样就引入了“位带操作”的概念。简而言之,为了能够实现单独的位控制,所以就有了位带这样的操作机制。

ARM Cortex-M3处理器采用哈佛结构,可以使用相互独立的总线来读取指令和加载/存储数据。指令代码和数据都位于相同的存储器地址空间,但在不同的地址范围。程序存储器,数据存储器,寄存器和I/O端口都在同一个线性的4 GB的地址空间之内。这是Cortex-M3的最大地址范围,因为它的地址总线宽度是32位。此外,为了降低不同客户在相同应用时的软件复杂度,存储映射是按Cortex-M3处理器提供的规则预先定义的。

ARM Cortex-M3的自带的系统外设也占用了一些地址空间。如GD32F1x0系列设备的存储映射,包括指令代码、SRAM、外设和其他预先定义的区域。为了简化外设的地址译码,每个外设分配的地址空间都是1KB。

为了实现位带操作,我们可以设置GD32的位带别名区。对象可以是SRAM、I/O外设空间,从而实现对这些地方的某一位的操作。这样就可以把代码缩小、速度更快、效率更高也更安全。

在寻址空间(32位地址是 4GB)的另一地方,取个别名区空间,从这地址开始处,每一个字(32BIT)就对应SRAM或I/O的一位。这样,1MB SRAM就可以有32MB的对应别名区空间,就是1位膨胀到32位(1BIT 变为1个字)。我们对这个别名区空间开始的某一字操作,置0或置1,就等于它映射的SRAM或I/O相应的某地址的某一位的操作。

支持了位带操作后,用户可以使用普通的加载/存储指令来对单一的比特进行读写。Cortex-M3处理器提供了两个支持位带操作的区域。其中一个是SRAM区的最低1MB范围,第二个是片内外设区的最低1MB范围。这两个区域中的地址除了普通应用外,还有自己的“位带别名区”。位带别名区把每个比特扩展成一个32位的字。当用户访问位带别名区时,就可以达到访问原始比特的目的。

下面的映射公式表明了位带别名区的每个32位字如何对应位带区的某个比特。

位带别名区地址 = 位带别名区基地址 + (字节偏移×32) + (位数×4)

其中:

位带别名区地址指的是位带区目标比特对应在位带别名区的地址

位带别名区基地址指的是位带别名区的起始地址

字节偏移指的是位带区目标比特所在的字节的字节地址偏移量

位数指的是目标比特在对应字节中的位置

例如,要想访问0x2000 0200地址的第7位, 可访问的位带别名区地址是:

位别名地址= 0x2200 0000 + (0x200 * 32) + (7 * 4) = 0x2200 401C

如果对0x2200 401C进行写操作,那么0x2000 0200的第7位将会相应变化;

如果对0x2200 401C进行读操作,那么视0x2000 0200的第7位状态而返回0x0000 0001或0x0000 0000。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 处理器
    +关注

    关注

    68

    文章

    20332

    浏览量

    254904
  • 单片机
    +关注

    关注

    6078

    文章

    45579

    浏览量

    673571
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    兆易创新GD32 MCU如何续写嵌入式创新之路

    自2013年发布国内首颗Cortex-M3内核32MCU以来,GD32 MCU历经十余年发展,截至2025年底累计出货量已突破25亿颗,依托完整的产品矩阵、日益完善的开发生态、聚焦场
    的头像 发表于 02-24 09:39 1093次阅读
    兆易创新<b class='flag-5'>GD32</b> <b class='flag-5'>MCU</b>如何续写嵌入式创新之路

    兆易创新正式推出GD32 Embedded AI平台

    端侧AI已成为嵌入式产业智能化升级的核心引擎,开发者对高效部署、轻量化适配的需求日益迫切。近日,兆易创新正式推出GD32 Embedded AI平台,为GD32 MCU产品家族注入AI算力,赋能工业检测、智能家居、安防设备及消费
    的头像 发表于 01-24 09:19 1990次阅读
    兆易创新正式推出<b class='flag-5'>GD32</b> Embedded AI平台

    兆易创新GD32H7系列MCU适配Micro-ROS的完整技术指南

    本文将从开发板介绍、环境搭建、适配开发、测试验证四个维度,提供GD32H7系列MCU适配Micro-ROS的完整技术指南
    的头像 发表于 12-31 10:09 8442次阅读
    兆易创新<b class='flag-5'>GD</b>32H7系列<b class='flag-5'>MCU</b>适配Micro-ROS的完整技术<b class='flag-5'>指南</b>

    arm单片机位带操作的原理

    中的序号。 bit_number:目标所在位置(0-31)。 3、带操作的优势 提高了代码的可读性和执行效率,尤其是对GPIO端口和寄存器的单个位进行操作时。
    发表于 11-25 08:24

    映射的操作

    Bit-banding 简称带、段 支持带操作后,可以使用普通的加载/存储指令来对单一的比特进行读写 对于硬件 I/O 密集型的底层程序最有用处 优点 使代码更简洁 在多任务
    发表于 11-18 07:03

    带操作的分析

    操作。但它是通过对位带别名区的操作实现的。 具体过程如下: 对位带别名区进行读写访问,带别名区通过地址映射关系映射到相应的带区,对位带
    发表于 11-18 07:01

    GPIO输出操作的几种方法分享

    权威指南》第五章,第5小节 带操作(87页~92页)。   为简化带操作,可以定义一些宏。比如,我们可以建立一个把“
    发表于 11-13 07:50

    兆易创新GD32 MCU家族高性能产品再添新锐:GD32F503/505系列芯片实力亮相

    GD32 MCU高性能产品线再添新锐。该系列基于Arm®v8-M架构,主频高达280MHz,具备灵活的存储配置、高集成度、内置多种安全功能,为高性能计算提供坚实基础,可广泛应用于数字电源、工业自动化、电机
    的头像 发表于 11-05 09:24 935次阅读

    GD选型手册

    GD存储器(Flash、利基型DRAM)、32通用型MCU选型手册
    发表于 10-15 15:53 5次下载

    gd32 env配置报错是什么原因呢?

    rtt官网下载源码和env后使用env配置gd32报如下错误请问是什么原因呢?
    发表于 09-25 06:19

    GD32的串口DMA收发数据失败怎么解决?

    gd32_hw_usart_init()函数中并未注册DMA收发的方式, GD32该函数如下: 而STM32的该函数如下: 查找GD32的串口操作库中相关的一些DMA
    发表于 09-17 06:04

    rt_thread studio import gd32h759i_start 失败的原因?

    使用rt_thread studio导入git 下载的bsp失败了,导入目录是 bsp/gd32/gd32h759i-start
    发表于 09-15 07:07

    rt-thread studio中创建不了gd32项目是怎么回事?

    为什么在rt-thread studio中创建一个gd32项目时候,他打开的那个选型芯片型号是,安装好了,没有确认键啊,只有退出sdk管理器,然后就卡在那里了,创建不了gd32的项目
    发表于 09-15 06:56

    基于兆易创新GD32系列MCU的GUI智能屏显解决方案

    随着人机交互需求的不断提升,图形用户界面(GUI)已成为各类智能设备的核心组成部分。兆易创新GD32系列MCU凭借其丰富的外设接口和强大的处理能力,为用户们提供了全面的GUI屏显解决方案,从低功耗小型显示屏到高分辨率彩色触摸屏,都能找到匹配的硬件平台和软件框架。
    的头像 发表于 08-19 14:49 1900次阅读
    基于兆易创新<b class='flag-5'>GD32</b>系列<b class='flag-5'>MCU</b>的GUI智能屏显解决方案

    GD32F4xx系列MCU基础工程资料

    GD32F4xx系列MCU基础工程创建.
    发表于 08-04 14:53 2次下载