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

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

3天内不再提示

既然ODR能控制管脚高低电平,为什么还需要BSRR寄存器呢?

工程师邓生 来源:未知 作者:刘芹 2023-10-24 11:49 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

既然ODR能控制管脚高低电平,为什么还需要BSRR寄存器呢?

为什么需要BSRR寄存器

单片机中,为了控制端口的输出状态,我们需要使用特定的寄存器。其中,ODR寄存器负责直接控制端口输出电平,但是在某些情况下,我们需要更高效、更精准的控制电平状态,这时就需要使用BSRR寄存器了。

BSRR寄存器全称Bit Set/Reset Register,中文名称为位设置/重置寄存器,其作用是能够快速切换输入输出引脚的电平状态。通过BSRR寄存器的配置,我们可以简单、高效地设置或者重置对应的引脚电平,而无需进行其他操作。

BSRR寄存器的结构

BSRR寄存器总共32位,其中前16位是用于设置对应引脚的高电平,后16位是用于设置对应引脚的低电平。

在BSRR寄存器的低16位中,每4位对应一个引脚,以16进制的形式表示。例如:低16位的0号位(LSB)至3号位分别对应的引脚号为0~3,以此类推。对于高16位,它们与低16位的区别在于,它们控制对应引脚的低电平状态,即为清零操作。

例如,如果要使引脚1变为高电平,那么我们可以给BSRR寄存器的第17位(低16位的1号位)写入1,这将会把引脚1设置为高电平。如果想要将引脚1的电平设置为低电平,我们只需要给BSRR寄存器的第33位(高16位的1号位)写入1,即可实现。

BSRR寄存器与ODR寄存器的区别

虽然ODR和BSRR都可以控制引脚的电平状态,但是它们在实现上还是有一些区别的。

首先,ODR寄存器的写入操作是瞬时的,即写入后立即生效。而BSRR寄存器的写入操作是有延迟的,需要在CPU时钟上升沿时才能够生效,因此,如果需要精准地控制电平状态,我们需要根据CPU主频等因素,精确地计算出延迟时间。

其次,在使用BSRR寄存器时,我们可以直接通过对应电平位的写入操作,来实现针对某一位的设置或重置操作。这样,在高频率操作时,会比使用ODR寄存器更具有优势,不仅可以提高效率,还能保证电平状态的准确性。

还有一个重要区别是,在使用BSRR寄存器时,如果想要对某个引脚进行设置或重置,我们只需要对对应的位进行操作即可,而使用ODR寄存器时,我们需要同时对所有引脚进行设置或重置,这样会导致效率降低。

综上所述,BSRR寄存器与ODR寄存器相比,更加灵活高效,能够更好地满足实际需求,特别是在高频率控制电平情况下更为显著。

结语

在单片机的开发中,对端口的输入输出状态控制是一项非常基础的操作,因此理解和掌握相关的寄存器是非常重要的。在实际应用中,根据不同的场景需求,选择合适的寄存器会使我们的开发更加方便、高效。

BSRR寄存器虽然只是一个小小的寄存器,但是在高频率作业中,能够发挥出强大的功能和优势。因此,对于端口输出状态的控制需求得到了更好的满足。

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

    关注

    31

    文章

    5589

    浏览量

    129057
  • odr
    odr
    +关注

    关注

    0

    文章

    6

    浏览量

    3767
  • bsrr
    +关注

    关注

    0

    文章

    2

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    使用位操作精准配置单片机寄存器

    项目对效率要求高,推荐使用位掩码操作;如果需要可读性和维护性,推荐结构体映射寄存器;如果使用Cortex-M架构,位带操作是个不错的选择。 1、使用位掩码 位掩码用于选择寄存器中的特定位,而不影响
    发表于 11-24 07:22

    请问riscv中断还需要软件保存上下文和恢复吗?

    的处理在进入和退出中断处理模式时没有硬件自动保存和恢复上下文(通用寄存器)的操作,因此需要软件明确地使用(汇编语言编写的)指令进行上下文的保存和恢复。根据中断是向量处理模式还是非向量处理模式,上下文
    发表于 10-20 09:56

    ‌SN74LVC595A 8位移位寄存器技术文档总结

    SN74LVC595A器件包含一个8位串行输入、并联输出移位寄存器,该寄存器为8位D型存储寄存器供电。存储寄存器具有并行的 3 态输出。为移位寄存器
    的头像 发表于 09-28 15:09 1105次阅读
    ‌SN74LVC595A 8位移位<b class='flag-5'>寄存器</b>技术文档总结

    ‌SN74HCT595 8位移位寄存器技术解析与应用指南

    移位寄存器和存储寄存器提供时钟。移位寄存器具有一个直接覆盖清零 (SRCLR) 输入以及用于级联结构的串行 (SER) 输入和串行输出 (QH’)。当输出使 (OE) 输入置为高
    的头像 发表于 09-19 14:31 575次阅读
    ‌SN74HCT595 8位移位<b class='flag-5'>寄存器</b>技术解析与应用指南

    TPIC6595 8位功率移位寄存器技术文档摘要

    和存储寄存器传输。当移位寄存器清除 (SRCLR) 为高电平时,存储寄存器将数据传输到输出缓冲。写入数据和读取数据仅在 RCK 较低时有效
    的头像 发表于 09-09 11:10 686次阅读
    TPIC6595 8位功率移位<b class='flag-5'>寄存器</b>技术文档摘要

    ‌TLC6C5912 12通道移位寄存器LED驱动技术文档总结

    。CLR 的低电平会清除设备中的所有寄存器。保持输出 使 (G) 高电平使输出缓冲中的所有数据保持为
    的头像 发表于 08-26 14:16 761次阅读
    ‌TLC6C5912 12通道移位<b class='flag-5'>寄存器</b>LED驱动<b class='flag-5'>器</b>技术文档总结

    Texas Instruments SN74AHC164/SN74AHC164-Q1 8位移位寄存器数据手册

    时,输出立即发生变化。门控串行(A和B)输入允许对输入数据进行完全控制。任一输入端的低电平都会复位第一个触发,而下一个时钟(CLK)脉冲输入的低电平会抑制新数据的输入。一个高
    的头像 发表于 08-01 15:33 788次阅读
    Texas Instruments SN74AHC164/SN74AHC164-Q1 8位移位<b class='flag-5'>寄存器</b>数据手册

    Texas Instruments SN74LV8T164/SN74LV8T164-Q1移位寄存器数据手册

    串行(A和B)输入允许完全控制输入数据。任一输入端的低电平抑制输入新数据,并在下一个时钟 (CLK) 脉冲将第一个触发复位为低电平。高电平
    的头像 发表于 07-30 11:05 452次阅读
    Texas Instruments SN74LV8T164/SN74LV8T164-Q1移位<b class='flag-5'>寄存器</b>数据手册

    Texas Instruments SN74AC164-Q1 8位SIPO移位寄存器数据手册

    )输入允许完全控制输入数据;任一输入端的低电平可抑制新数据的输入,并在下一个时钟(CLK)脉冲将第一个触发复位为低电平。一个高电平输入启用
    的头像 发表于 07-16 15:28 435次阅读
    Texas Instruments SN74AC164-Q1 8位SIPO移位<b class='flag-5'>寄存器</b>数据手册

    Texas Instruments SN74ACT164-Q1 8位SIPO移位寄存器数据手册

    输入(A与B)允许对输入数据进行完全控制。任一输入为低电平都会抑制新数据的输入,并在下一个时钟 (CLK) 脉冲时将第一个触发器重置为低电平。高电平输入使
    的头像 发表于 07-16 10:06 479次阅读
    Texas Instruments SN74ACT164-Q1 8位SIPO移位<b class='flag-5'>寄存器</b>数据手册

    请问L9663 Transceiver使用Direct Interface(SYNCx&amp;DOUTx)模式时还需要通过SPI对其寄存器进行配置吗?

    L9663 Transceiver使用Direct Interface(SYNCx&DOUTx)模式时还需要通过SPI对其寄存器进行配置吗?
    发表于 03-13 07:38

    ADS1298如果使用寄存器命令RESET去复位,那么其RESET管脚是接高电平还是低电平,还是悬空?

    我想问一下ADS1298如果使用寄存器命令RESET去复位,那么其RESET管脚是接高电平还是低电平,还是悬空
    发表于 02-10 06:00

    DAC7565 SYNC这个IO脚在常态应该置为低电平还是高电平

    手册中关于SYNC的描述是:SYNC低电平时使输入移位寄存器,SYNC需要保持低电平到接收玩24个SCLK周期才能更新DA输出,如果没到
    发表于 02-05 09:31

    想用一个控制器来直接对TSB81BA3E的寄存器进行读写,怎么实现?

    大家好!我现在在使用TSB81BA3E 这个1394物理层芯片,我现在想用一个控制器来直接对这个芯片的寄存器进行读写(不通过链路层)!请问我应该使用芯片的哪些引脚?控制器选FPGA可以嘛?
    发表于 12-17 07:08

    DAC5681z从FPGA读数据,为什么还需要一个DCLKP/N

    以DAC5681z为例,DAC芯片从FPGA读数据,然后按照自己的采样速率CLKIN/CLKINC 每隔16bit转换成1个电平值,为什么还需要一个DCLKP/N
    发表于 12-11 07:52