当前位置: 首页 > news >正文

寄存器相关及清零、置1、取反等位移操作

驱动单元

  • DCode总线:访问数据
  • 系统总线:访问外设的寄存器,比如读写寄存器
  • DMA总线:传输数据,数据可以在某个外设的数据寄存器,也可在SRAM,还可在内部FLASH,数据可被DCode总线和DMA总线访问,为了避免访问冲突,取数据时需经过总线矩阵仲裁决定。

被动单元

  • 内部的闪存存储器:FLASH,内核通过ICode总线取其中的指令;
  • 内部的SRAM:程序的变量、堆栈的开销都基于内部的SRAM。内核通过DCode总线访问它;
  • FSMC:即灵活的静态的存储器控制器,一个可扩展静态内存的外设,如外部SRAM、NANDFLASH、NORFLASH;
  • AHB总线:挂载外设,比如GPIO、串口、I2C、SPI等
  • STM32F10xx系统框图

C语言中对某一位或几位清零操作

对变量a的第x位清零,就1<<x位,再取反,跟a位与操作即可得到清零操作,例如a = 0x2f,对其第2位清零,1左移2位得到0000 0100,按位取反后得到1111 1011,再与a相与,1111 1011&0010 1111 = 0010 1011

若要对某几位清零:a = 0x2f(0010 1111),若要对bit2、bit3清零,则先得到0000 1100(掩码值),需要3<<2,再按位取反得到1111 0011,最后与0010 1111相与后得到0010 0011。

C语言中对某一位或几位置1操作

a = 0x2f(0010 1111),若对bit4置1,则1<<4得到0001 0000,然后与0010 1111按位或得到0011 1111
若对某几位(bit6、bit7)置1则3<<6得到1100 0000,然后与0010 1111按位或得到1110 1111

C语言中对变量某位取反操作

a = 0x2f(0010 1111),若要将bit6取反,则先1<<6得到0100 0000,与0010 1111异或后得到0110 1111

相关文章:

  • 进程的创建态、运行状态和阻塞状态
  • FreeRTOS与RT-Thread深度对比:从入门到精通的全面解析
  • Redlinux(2025.3.29)
  • 地图与图层操作
  • 18-产品经理-跟踪进度
  • DeepSeek-R1-Distil-Qwen-7B:为何说它是Qwen模型的“瘦身版”?
  • 计科数据库第二次上机操作--实验二 表的简单查询
  • 从Oracle和TiDB的HTAP说起
  • 人工智能通识速览(Part5. 大语言模型)
  • 爬虫:一文掌握 Pydoll 的详细使用(彻底改变浏览器自动化,且能绕过绕过验证码!)
  • Spring Cloud之服务入口Gateway之Route Predicate Factories
  • 利用解析差异SSRF + sqlite注入 + waf逻辑漏洞 -- xyctf 2025 fate WP
  • Python高阶函数-sorted(深度解析从原理到实战)
  • 行星际介质与等离子体环境
  • Day20 -实例:红蓝队优秀集成式信息打点工具的配置使用
  • 1990-2019年各地级市GDP数据
  • XC7K160T-2FFG676I Kintex‑7系列 Xilinx 赛灵思 FPGA 详细技术规格
  • QML菜单控件:菜单的常规用法
  • aws s3api 常用命令
  • 创意 Python 爱心代码
  • 天河建设网站设计/seo优化推广业务员招聘
  • 东港建站公司/百度一下官网网址
  • 免费试用网站制作/软件推广怎么赚钱
  • 58同城北京网站建设/百度怎么推广自己的信息
  • 日本漫画网站模板/淘宝代运营1个月多少钱
  • 阿里云9元做网站/百度收录链接提交入口