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

    文章

    20148

    浏览量

    247014
  • 单片机
    +关注

    关注

    6074

    文章

    45337

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    arm单片机位带操作的原理

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

    带操作的分析

    操作。但它是通过对位带别名区的操作实现的。 具体过程如下: 对位带别名区进行读写访问,带别名区通过地址映射关系映射到相应的带区,对位带
    发表于 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 255次阅读

    GD选型手册

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

    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中创建不了gd32项目是怎么回事?

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

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

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

    兆易创新GD32 MCU闪耀2025慕尼黑上海电子展

    GD32 MCU以高性能与创新生态闪耀2025慕尼黑上海电子展,从工业,数字能源到汽车,物联网,以"芯"驱动数字化转型,让我们一起回顾下慕展上GD32 MCU强大产品矩阵和创新解决方案
    的头像 发表于 04-22 14:08 1869次阅读
    兆易创新<b class='flag-5'>GD32</b> <b class='flag-5'>MCU</b>闪耀2025慕尼黑上海电子展

    GD32与STM32有什么区别

    电子发烧友网站提供《GD32与STM32有什么区别.docx》资料免费下载
    发表于 04-03 17:27 0次下载

    GD32单片机GPIO结构及注意事项

    电子发烧友网站提供《GD32单片机GPIO结构及注意事项.pdf》资料免费下载
    发表于 02-07 17:27 3次下载
    <b class='flag-5'>GD32</b>单片机GPIO结构及注意事项

    AN095 提高GD32温度传感器使用精度的方法

    电子发烧友网站提供《AN095 提高GD32温度传感器使用精度的方法.pdf》资料免费下载
    发表于 01-17 16:14 1次下载
    AN095 提高<b class='flag-5'>GD32</b>温度传感器使用精度的方法

    AN122 GD32H7系列MCU OSPI flash执行环境用户指南

    电子发烧友网站提供《AN122 GD32H7系列MCU OSPI flash执行环境用户指南.pdf》资料免费下载
    发表于 01-17 15:57 3次下载
    AN122 <b class='flag-5'>GD</b>32H7系列<b class='flag-5'>MCU</b> OSPI flash执行环境用户<b class='flag-5'>指南</b>

    #新年新气象,大家新年快乐!#emWin应用开发——基于GD32

    emWin 应用于基于 GD32 的系统开发中,可以大大简化图形界面的开发过程。 以下是一个简单的指南,帮助你在基于 GD32 的项目中集成 emWin: 1. 准备工作 硬件准备 GD32
    发表于 01-14 16:34