目录

      • 一、 按行为特性分类
      • 二、 按功能角色分类(更宏观的角度)
      • 总结与注意事项

在32位单片机(尤其是基于ARM Cortex-M系列内核的)中,寄存器的种类可以按照其“行为模式”和“功能”来进行分类。

以下是32位单片机(以ARM Cortex-M为例)中常见的寄存器种类。

一、 按行为特性分类

这正是嵌入式编程中最关键的概念,决定了软件如何与硬件交互。

  1. 状态寄存器 (Status Register) - SR

    • 行为硬件置位,软件清零
    • 描述:用于反映外设或内核的当前状态。软件通常只能读取其值,或通过向特定位写1来清除(复位)该标志位,写0无效。这是最常见的类型。
    • 示例
      • USART状态寄存器 (USART_SR) 中的 TXE (发送寄存器空)、RXNE (接收寄存器非空)、ORE (溢出错误) 等标志。
      • 定时器状态寄存器 (TIMx_SR) 中的 UIF (更新中断标志)、CC1IF (捕获/比较1中断标志)。
      • GPIO输入数据寄存器 (IDR):可视为一种状态寄存器,反映引脚当前电平,软件只能读。
  2. 控制寄存器 (Control Register) - CR

    • 行为软件读写
    • 描述:用于配置外设或内核的工作模式、使能功能等。软件可以随时读写,硬件通常只读取其配置并据此工作,一般不会修改它的值(除非极特殊情况,如休眠时硬件自动清除某些使能位)。
    • 示例
      • USART控制寄存器1 (USART_CR1) 中的 UE (USART使能)、TE (发送使能)、RE (接收使能)。
      • 定时器控制寄存器1 (TIMx_CR1) 中的 CEN (计数器使能)。
  3. 数据寄存器 (Data Register) - DR

    • 行为软件写入/硬件读出硬件写入/软件读出
    • 描述:作为数据交换的缓冲区。
    • 示例
      • USART数据寄存器 (USART_DR):软件向它写数据,USART外设会自动读取并发送;USART接收到的数据也会自动放入该寄存器,软件读取它。
      • ADC数据寄存器 (ADC_DR):硬件(ADC模块)完成转换后,将结果数据写入该寄存器,软件再从中读取。
  4. 动作触发器 (Action Trigger) / 命令寄存器 (Command Register)

    • 行为软件置位,硬件自动复位
    • 描述:您对这个的描述非常到位!软件向某位写1会触发一个特定的硬件动作(如开始转换、清除某种状态),一旦硬件识别到这个命令并开始执行,该位会自动清零。这可以避免软件需要先写1再写0来清除的麻烦。
    • 示例
      • ADC控制寄存器 (ADC_CR2) 中的 SWSTART 位 (软件启动常规转换):写1启动转换,转换开始后硬件自动将其清零。
      • Flash控制寄存器 (FLASH_CR) 中的 STRT 位 (开始擦除):写1开始擦除,操作开始后硬件清零。

二、 按功能角色分类(更宏观的角度)

在芯片手册中,寄存器通常按所属外设模块和功能来组织。

  1. 内核寄存器 (Core Registers)

    • 存在于CPU内核中,由ARM架构定义。
    • 通用寄存器 (R0-R12):用于数据处理。
    • 栈指针寄存器 (SP/R13):指向当前栈顶。
    • 链接寄存器 (LR/R14):存储函数返回地址。
    • 程序计数器 (PC/R15):指向下一条要执行的指令。
    • 程序状态寄存器 (xPSR):包含ALU标志(N, Z, C, V)、中断状态等。
    • 中断/异常屏蔽寄存器 (PRIMASK, FAULTMASK, BASEPRI):控制中断的使能。
    • 控制寄存器 (CONTROL):控制处理器模式(线程/Handler)和栈指针选择(MSP/PSP)。
  2. 外设寄存器 (Peripheral Registers)

    • 挂载在系统总线上,用于控制所有片内外设。
    • 控制寄存器 (CRx):配置工作模式,如定时器的计数模式、PWM模式。
    • 数据寄存器 (DRx):输入输出数据,如GPIO输出、ADC结果、SPI/I2C数据。
    • 状态寄存器 (SR):查看外设状态,如数据是否就绪、是否发生错误。
    • 中断寄存器
      • 中断使能寄存器 (IER / IMR)软件设置,控制允许哪些中断源产生请求。
      • 中断标志寄存器 (IFR / ISR / SR中的标志位)硬件置位,当中断事件发生时置位。软件通过写1或特定值来清除
      • 中断优先级寄存器 (IPR)软件设置,配置每个中断源的优先级。
    • DMA寄存器:配置DMA传输的源地址、目标地址、数据量等。
  3. 系统控制寄存器 (System Control Registers)

    • 控制芯片的整体行为。
    • 时钟控制寄存器 (RCC)软件设置,配置系统时钟源、PLL、各外设时钟的使能等。这是单片机初始化的核心。
    • 电源控制寄存器 (PWR)软件设置,控制睡眠、停机、待机等低功耗模式。
    • 系统配置控制器 (SYSCFG)软件设置,配置引脚重映射、中断线分配等。

总结与注意事项

寄存器类型主要操作者常见行为示例
状态寄存器 (SR)硬件硬件置位,软件清零USART_SR, TIMx_SR
控制寄存器 (CR)软件软件读写,硬件只读USART_CR1, TIMx_CR1
数据寄存器 (DR)软件/硬件数据双向流通USART_DR, ADC_DR
命令寄存器软件触发软件写1,硬件执行后自动清零ADC_CR2.SWSTART
中断使能寄存器软件软件读写USART_CR1.RXNEIE
中断标志寄存器硬件硬件置位,软件清零EXTI->PR, USART_SR.RXNE

重要提示

  • “写1清零” (Write-1-to-clear):在清除状态或中断标志时,绝大多数寄存器采用这种机制。这是为了安全,避免软件误操作覆盖其他位。
  • “读-修改-写” (Read-Modify-Write):在修改控制寄存器某一位而不影响其他位时,必须采用此操作。即先读取整个寄存器,用逻辑运算(&|)修改目标位,再写回整个寄存器。现代的芯片库函数(如HAL/LL库)已经帮我们处理了这些细节。

理解这些寄存器的行为差异,是编写稳定、高效嵌入式程序的基础。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/94493.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/94493.shtml
英文地址,请注明出处:http://en.pswp.cn/bicheng/94493.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Redis如何高效安全的遍历所有key?

大家好,我是锋哥。今天分享关于【Redis如何高效安全的遍历所有key?】面试题。希望对大家有帮助; Redis如何高效安全的遍历所有key? 超硬核AI学习资料,现在永久免费了! 在 Redis 中,遍历所有的 key 是一个相对昂贵的…

网易云音乐歌曲导出缓存为原始音乐文件。低调,低调。。。

最近买了个榭兰图耳机头,拿到手第一件事当然是煲机了。弄个旧手机做24小时煲机但是不想再装多一个网易云音乐,省得一号多登录会问题。对于软工男最先想到的肯定是在本地直接播放音乐了,正好自己 有淘宝88VIP联合会员,于是琢磨着怎…

从Android到鸿蒙:一场本应无缝的转型-优雅草卓伊凡

从Android到鸿蒙:一场本应无缝的转型-优雅草卓伊凡看到Android开发者询问如何转向鸿蒙,卓伊凡不禁摇头:真正的Android工程师根本不需要“学习”鸿蒙,只需要简单查阅文档即可。近年来,随着鸿蒙系统的不断发展&#xff0…

HTML————更实用于后端宝宝们学习的前端

博主主攻后端,但是毕竟要做网站,我们来学习一点前端的知识,一共有三节,学完就能做一点小小的页面啦;1.1 HTML基础什么是HTML呢,他是超文本标记语言,还记得HTTP是啥不,HTTP是超文本传…

Vue.js 核心机制深度学习笔记

Vue核心机制深度学习笔记 概述 本文档整理自一次深入的 Vue.js 技术讨论,涵盖了响应式系统原理、虚拟 DOM 工作机制、更新策略等核心概念。通过问答形式,旨在帮助开发者彻底理解 Vue.js 的内部运行机制。 目录 SPA 应用与虚拟 DOM虚拟 DOM 生成与 Di…

通义千问VL-Plus:当AI“看懂”屏幕,软件测试的OCR时代正式终结!

—— 一位测试老兵的实战手记:如何用多模态大模型让Bug无处遁形 深夜11点,某电商App紧急上线前 测试工程师小王盯着第37次失败的自动化脚本崩溃截图: “Network Error: Conn3ct1on t1m30ut” 传统OCR把“timeout”识别成“t1m30ut”&#xff…

Notepad++换行符替换

使用 Postman 测试接口时,有时候会遇到需要发送一篇文章,但是我们需要收到将文章的换行符换成 \n,我们可以通过 Notepad 实现快速替换。 首先,将文章粘贴到 Notepad 中,使用 Ctrl H 快捷键打开替换窗口。 查找目标&a…

前馈神经网络总结

前馈神经网络由三个主要部分组成:输入层: 负责接收原始数据,通常对应于特征的维度。隐藏层: 包含一个或多个层,每层由多个神经元组成,用于提取输入数据的抽象特征。输出层: 产生网络的最终预测或…

AI 自动化编程 trae1 体验 页面添加富编辑器

体验总结 目前solo功能未使用过, trae 能够准确率很高地处理简单问题,如代码格式化等。 对于复杂的问题,如涉及代码组件版本和bug等问题,准确率主要依赖整个互联网资源库的分析, 目前准备率一般有时候还不如自己添加…

Java基础(十四)分布式

一、CAP 理论 CAP 原则,又称 CAP 定理,指出在分布式系统中,Consistency(一致性)、Availability(可用性)和 Partition tolerance(分区容错性)这三个特性无法同时满足&…

接口自动化测试(一)

接口测试1.接口的概念程序内部的接口:程序内部接口指同一程序或系统内不同模块、组件或类之间的交互点,用于数据传递、功能调用或资源共享系统对外的接口:是不同系统、模块或服务之间进行交互的边界定义,通常通过预定义的协议、数据格式和通信方式实现。…

单片机外设(七)RTC时间获取

文章目录一.RTC介绍二.IMX6ull RTC介绍1.SNVS_HP (high power domain)2.SNVS_LP (low power domain)3.SNVS interrupts and alarms三. SNVS重点寄存器介绍1.SNVS_HP Command(HPCOMR)2.SNVS_HP/SNVS_LP Control register (SNVS_HPCR/SNVS_LPCR)3.SNVS_HP/SNVS_LP 状态寄存器&…

第1篇:走进日志框架的世界 - 从HelloWorld到企业级应用

前言 在现代企业级应用开发中,日志系统扮演着至关重要的角色。无论是问题排查、性能监控,还是业务分析,都离不开完善的日志记录。今天,我们将从零开始,手把手教你构建一个现代化的注解驱动日志框架。 为什么需要自定义…

173-基于Flask的微博舆情数据分析系统

基于Flask的微博舆情数据分析系统 - 技术实现与架构设计 本文详细介绍了一个基于Flask框架开发的微博舆情数据分析系统,包含数据爬取、情感分析、可视化展示等完整功能模块。 📋 目录 项目概述技术栈系统架构目录结构核心功能模块代码实现数据可视化部署…

美股期权历史市场数据波动特性分析

标题:基于本地CSV数据的美股期权分析与应用实践 在金融量化研究领域,本地CSV数据的高效应用是开展美股期权研究的重要基础。本文将围绕美股期权日级别行情数据、波动率分析及策略构建的核心流程,详细介绍从数据预处理到实际场景落地的关键方…

VUE从入门到精通二:ref、reactive、computed计算属性、watch监听、组件之间的通信

目录 一、ref、reactive创建响应式对象 1、ref() 2、reactive() 3、ref和reactive的区别 二、computed计算属性 1、什么是计算属性computed 2、计算属性computed和函数方法的区别 3、计算属性computed的优势 三、watch监听函数 1、什么是watch? 2、基本语…

构建AI智能体:十二、给词语绘制地图:Embedding如何构建机器的认知空间

我们理解“苹果”这个词,能联想到一种水果、一个公司、或者牛顿的故事。但对计算机而言,“苹果”最初只是一个冰冷的符号或一串二进制代码。传统的“One-Hot”编码方式(如“苹果”是[1,0,0,...],“香蕉”是是[0,1,0,...]&#xff…

突击复习清单(高频核心考点)

🔒 锁的作用与使用(synchronized vs ReentrantLock) 面试官为什么问:考察你对并发编程基础的掌握程度。 速记答案: 作用:保证线程安全,解决多线程环境下对共享资源访问的数据不一致问题。 synch…

2025年视频大模型汇总、各自优势及视频大模型竞争焦点

文章目录一、国际主流视频大模型1. OpenAI Sora Turbo2. Google Veo 33. Runway Gen-3 Alpha二、国内主流视频大模型1. 快手可灵AI2. 爱诗科技PixVerse V33. 阿里巴巴通义万相2.14. 生数科技Vidu Q15. 字节跳动即梦AI三、核心趋势与竞争焦点一、国际主流视频大模型 1. OpenAI …