STM32的寄存器详解

news2024/9/22 21:27:10

目录

前言

一、 STM32 单片机寄存器概述

1.寄存器的作用

2.寄存器的分类

二、STM32 内核寄存器

1.程序计数器(PC)

2.堆栈指针(SP)

3.链接寄存器(LR)

4.控制寄存器(CONTROL)

三、STM32 外设寄存器

1.GPIO寄存器

2.USART 寄存器

3.TIM 定时器寄存器

4.ADC 寄存器

四、寄存器的访问方式

1.直接访问

2.库函数访问

五、寄存器编程的注意事项

1.寄存器的位定义

2.寄存器的访问顺序

3.中断处理中的寄存器访问

六、总结


前言

    在嵌入式系统开发中,STM32 单片机以其高性能、丰富的外设和灵活的编程方式而备受青睐。理解 STM32 单片机的寄存器是深入掌握其工作原理和进行高效编程的关键。本文将详细介绍 STM32 单片机的寄存器,帮助读者更好地理解和应用这一强大的微控制器。

一、 STM32 单片机寄存器概述

寄存器是微控制器内部的一种高速存储单元,用于存储控制信息、数据和状态标志等。STM32 单片机拥有众多的寄存器,它们分布在不同的外设模块和内核中,共同协作实现各种功能。

1.寄存器的作用

  • 控制外设的工作模式和参数设置。
  • 读取外设的状态信息和数据。
  • 配置内核的运行模式和中断处理。

2.寄存器的分类

  • 通用寄存器:用于存储临时数据和地址。
  • 特殊功能寄存器(SFR):特定于某个外设或内核功能的寄存器,用于控制和状态监测。

二、STM32 内核寄存器

1.程序计数器(PC)

  • 作用:存储下一条要执行的指令的地址。
  • 特点:自动递增,指向程序的执行流程。

2.堆栈指针(SP)

  • 作用:指向堆栈的顶部,用于存储函数调用时的局部变量和返回地址。
  • 分为主堆栈指针(MSP)和进程堆栈指针(PSP),可根据不同的运行模式切换使用。

3.链接寄存器(LR)

  • 作用:在函数调用时存储返回地址。
  • 当发生中断或异常时,LR 也用于保存返回地址,以便在中断处理完成后恢复程序的执行。

4.控制寄存器(CONTROL)

  • 作用:控制处理器的运行模式,如选择特权级和堆栈指针。
  • 可用于切换处理器的运行状态,如进入和退出中断处理。

三、STM32 外设寄存器

1.GPIO寄存器

  • GPIOx_MODER:用于设置 GPIO 引脚的工作模式,如输入、输出、模拟等。
  • GPIOx_OTYPER:配置 GPIO 引脚的输出类型,推挽输出或开漏输出。
  • GPIOx_OSPEEDR:设置 GPIO 引脚的输出速度。
  • GPIOx_PUPDR:选择 GPIO 引脚的上拉或下拉电阻。
  • GPIOx_IDR 和 GPIOx_ODR:分别用于读取输入引脚的状态和设置输出引脚的值。

2.USART 寄存器

  • USARTx_SR:状态寄存器,包含发送和接收状态标志。
  • USARTx_DR:数据寄存器,用于发送和接收数据。
  • USARTx_BRR:波特率寄存器,设置串口通信的波特率。
  • USARTx_CR1、USARTx_CR2 和 USARTx_CR3:控制寄存器,用于配置串口的工作模式、中断等。

3.TIM 定时器寄存器

  • TIMx_CR1:控制寄存器 1,设置定时器的计数模式、预分频系数等。
  • TIMx_ARR:自动重装载寄存器,决定定时器的计数周期。
  • TIMx_CNT:计数器寄存器,存储当前的计数值。
  • TIMx_DIER:中断使能寄存器,允许或禁止定时器的中断。
  • TIMx_SR:状态寄存器,包含定时器的各种状态标志。

4.ADC 寄存器

  • ADCx_CR1 和 ADCx_CR2:控制寄存器,用于配置 ADC 的工作模式、转换触发等。
  • ADCx_SMPR1 和 ADCx_SMPR2:采样时间寄存器,设置 ADC 的采样时间。
  • ADCx_SQR1、ADCx_SQR2 和 ADCx_SQR3:通道序列寄存器,用于选择要转换的通道。
  • ADCx_DR:数据寄存器,存储转换后的结果。

四、寄存器的访问方式

1.直接访问

通过寄存器的地址直接读取或写入寄存器的值。例如,使用指针访问寄存器:*(volatile uint32_t *)0x40020000 = 0x01;

2.库函数访问

STM32 提供了丰富的库函数,可以方便地访问寄存器。例如,使用 GPIO 库函数设置引脚输出:GPIO_SetBits(GPIOA, GPIO_Pin_5);

五、寄存器编程的注意事项

1.寄存器的位定义

  • 理解寄存器中每个位的含义和作用,避免错误地设置或读取寄存器的值。
  • 可以参考 STM32 的参考手册和数据手册,了解寄存器的详细位定义。

2.寄存器的访问顺序

  • 某些寄存器的设置需要按照特定的顺序进行,以确保正确的操作。
  • 在进行复杂的外设配置时,要仔细阅读参考手册中的操作步骤和注意事项。

3.中断处理中的寄存器访问

  • 在中断处理程序中,要注意寄存器的状态可能会被其他中断或程序修改
  • 尽量减少在中断处理程序中对寄存器的访问,以避免影响系统的实时性和稳定性。

六、总结

STM32 单片机的寄存器是实现各种功能的关键组成部分。通过深入理解寄存器的作用、分类和访问方式,开发者可以更好地掌握 STM32 单片机的工作原理,进行高效的编程和系统设计。在实际应用中,要注意寄存器的位定义、访问顺序和中断处理等问题,以确保系统的正确运行。希望本文对读者在学习和使用 STM32 单片机的寄存器时有所帮助。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java项目服务器CPU飙升问题排查

目录 一.前言 二.程序日志定位 三.Mysql事务定位 四.程序代码定位 五.微服务注册异常定位 六.异常进程定位 6.1.进程的线程信息分析 6.2.进程的堆内存分析 七.总结 八.JVM分析工具推荐 一.前言 系统出现反应慢,打不开,登录不上等问题。 二.程序日志定位 通过程序日…

DOCKER(国内镜像源,安装相关微服务组件,py以及jar包的docker打包(上传私有云以及输出本地文件))

前言 之前单独在旧的帖子下面更新的时候,码字码了1000多字的时候电脑蓝了,重启什么东西都没有,我红了。平台上面的自动保存是针对新文章的。 这周因为隔壁有项目要验收了,我的好大哥就把我派过去配合赶进度了,还体验了…

计频器(Keysight 53210A)

计频器(Keysight 53210A) 一、基本介绍 探棒有两种,第一种是仪器自带的原厂探头,第二种是专门测试晶振的探头,我们的大部分的测试都是测32Khz和 24Mhz的频率,因此测32Khz频率的时候选用原厂探头、测晶振24Mhz频率的时候选用专门测晶振的探头(如下图所示)。----信号频…

YOLO实践

一. 环境安装 参考视频 Pytorch环境安装细节 pytorch安装:一个单独的环境中,能使用pip就尽量使用pip,实在有问题的情况,例如没有合适的编译好的系统版本的安装包,再使用conda进行安装,不要来回混淆CUDA是…

上网行为管理系统的功能有哪些(员工全网行为管理解决方案)

员工在工作中的上网行为日益多样化,这不仅带来了工作效率的提升,也带来了诸多管理上的挑战。 网络黑客攻击、数据泄露、非工作相关活动的占用带宽等问题层出不穷,对企业的信息安全和运营效率构成了严重威胁。 因此,上网行为管理…

HIC-YOLOv5:改进的YOLOv5用于小对象检测

HIC-YOLOv5: Improved YOLOv5 For Small Object Detection 摘要 小目标检测是物体检测领域的一大难点。已有的一些工作对这一任务提出了改进,例如增加若干个注意块或改变特征融合网络的整体结构。然而,这些模型的计算开销很大,使得部署实时目…

Leetcode面试经典150题-136.只出现一次的数字

解法都在代码里,不懂就留言或者私信 这个题不知道为啥会考,过于简单了,我解题写注释用了两分钟不到,5行代码。。。 class Solution {public int singleNumber(int[] nums) {/**这个题目确实时间的题,根据位运算法则我…

公安监所智慧监管解决方案

1. 项目背景与政策解读 《智慧监管行业背景》部分强调了国家关于推进智慧监管建设的指导意见,以及特定省份发布的“智慧新监管”建设规范,旨在实现监所管理的规范化、标准化和信息化。 2. 监所建设目标 根据政策要求,监所建设内容涵盖数字…

无人机之云台的作用

无人机云台在无人机技术中扮演着至关重要的角色,其作用主要体现在以下几个方面: 一、 确保拍摄稳定性 防抖动:无人机在飞行过程中,尤其是在复杂环境下,如遇到风力干扰或进行高速飞行时,机身容易产生震动和…

MySQL数据库---JDBC编程

1.目录 目录 1. 数据库编程的必备条件 2. Java的数据库编程:JDBC 3.安装工作JDBC: 1)使用经典版找到对应版本下载 2)点击Files栏目的jar 3)用文件夹打开 4)一直点进去会得到此界面 4.环境配置 1)下载 jar 2)把jar导入到自己的项目中. a)先在项…

算法训练营——day1数组二分查找

数组是存放在连续空间上的相同数据类型的集合。 注意:下标从0开始;内存空间连续。 正因为数组的内存地址空间连续,所以在删除、添加元素的时候需要移动其他元素。 数组的元素不能删除,只能覆盖! 二维数组特殊 在C中&…

多目标应用:基于NSGA3的移动机器人路径规划研究(提供MATLAB代码)

一、机器人路径规划介绍 移动机器人(Mobile robot,MR)的路径规划是 移动机器人研究的重要分支之,是对其进行控制的基础。根据环境信息的已知程度不同,路径规划分为基于环境信息已知的全局路径规划和基于环境信息未知或…

Python函数(11自定义模块第三方模块内置模块)

Python基础语法文章导航: Python基础(01初识数据类型&变量)Python基础(02条件&循环语句)Python基础(03字符串格式化&运算符&进制&编码)Python基础(04 基础练习…

定时器方案:时间表盘

目录 一:前言 二:手搓时间表盘 1、任务结点,层级,表盘的结构体 2、表盘的初始化 3、添加定时任务 4、删除定时任务 5、检查任务是否超时 6、清空任务 一:前言 我之前有两篇文章是写定时器方案的,大家…

智菜谱推|基于SprinBoot+vue的智能菜谱推荐系统(源码+数据库+文档)

智能菜谱推荐系统 基于SprinBootvue的智能菜谱推荐系统 一、前言 二、系统设计 三、系统功能设计 系统功能实现 管理员功能模块实现 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取: 博主介绍:✌️大厂…

【开源免费】基于SpringBoot+Vue.JS渔具租赁系统(JAVA毕业设计)

本文项目编号 T 005 ,文末自助获取源码 \color{red}{T005,文末自助获取源码} T005,文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析 六、核心代码6.1 渔…

低空经济概念火爆:无人机飞手人才培养先行

随着科技的飞速发展,低空经济作为新兴的经济形态,正以前所未有的速度崛起,成为推动产业升级和经济发展的新引擎。无人机作为低空经济的重要组成部分,其应用领域已从最初的军事侦察、航拍扩展到农业植保、物流配送、环境监测、应急…

使用corrplot绘制行、列不同,且带有p值显著性标注的相关系数图

导读: 相关系数衡量两个变量之间的线性关系,通常以N*N的矩阵形式展示。例如样品vs样品,或者基因vs基因的相关性。本文介绍了使用corrplot R包绘制M*N的相关系数矩阵,例如M个基因表达与N个代谢物信号间的相关性,同时带…

国产芯片+国产操作系统打造办公系统

在《使用国产操作系统作为开发系统》一文中,我介绍了将开发系统从 Ubuntu 替换为 Deepin 系统的过程。经过一个多月的使用,Deepin 系统已然成为我的主力开发平台,其顺手程度让我对国产操作系统的信心大增。于是,我开始将目光瞄向公…

顶级开源许可证详解

目录 软件许可证类型:版权左派和宽容型 顶级开源许可证详解 GNU 通用公共许可证 (GPL) Apache 许可证 Microsoft 公共许可证 (Ms-PL) 伯克利软件发行版 (BSD) 通用开发和分发许可证 (CDDL) Eclipse 公共许可证 (EPL) MIT 许可证 了解你的开源许可证&#…