【STM32 ARM】操作寄存器控制led

文章目录

  • 前言
  • GPIO操作方法
    • led原理图
    • 设置时钟
      • APB的概念
    • 设置APB
    • 设置输出引脚
    • 设置引脚高低电平寄存器
    • 寻找寄存器地址
  • 总结


前言

STM32是STMicroelectronics(意法半导体)公司的一款32位Flash微控制器产品,基于ARM Cortex™-M内核。STM32系列微控制器在工业控制、商业应用等领域得到了广泛的应用。本文将介绍如何使用STM32的ARM架构操作寄存器来控制LED。

在嵌入式系统中,LED常常被用作简单的显示设备,可以用来指示系统的状态、运行情况等。在STM32中,我们可以通过操作GPIO(General Purpose Input/Output,通用输入输出)寄存器来控制LED的亮灭。


GPIO操作方法

led原理图

这个是我的原理图:
在这里插入图片描述
我现在需要操作PB5,所以我们需要去设置他
我们需要查看芯片手册,我们才能去设置他

设置时钟

APB的概念

STM32微控制器中的APB(Advanced Peripheral Bus,高级外设总线)主要用于低带宽的周边外设之间的连接,例如UART、I2C等。在STM32中,APB又可以分为APB1和APB2。

  • APB1:APB1是低速总线,最高支持42MHz的频率。它主要负责DA,USB,SPI,I2C,CAN,串口2345,以及普通的定时器。

  • APB2:相比之下,APB2是高速总线,最高支持84MHz的频率。它主要负责AD,I/O,高级的定时器,以及串口1。

另外,如果所在总线(APB1/APB2)的分频系数为1,那么就不倍频,如果不为1(比如2/4/8/16),那么就会2倍频后,作为定时器时钟输入。

设置APB

我们需要操作的是GPIO,所以我们需要设置APB2
在这里插入图片描述
我们可以看到IPPB EN这个寄存器,这个就是我们需要操作的
他的取值:
在这里插入图片描述
1表示使能。他是全部使能的,使能了他,GPIOB的其余所有引脚都被使能了

设置输出引脚

在这里插入图片描述
这里是配置某个引脚的寄存器数据手册,low表示0~7号引脚,共8个

在 STM32 微控制器的 GPIO 配置中,CNFy[1:0]MODEy[1:0] 是用来配置 GPIO 引脚的寄存器位。

  • CNFy[1:0] (Port x configuration bits) 是用来配置对应的 I/O 口的工作模式的。具体的配置取决于 MODEy[1:0] 的设置:

    • MODEy[1:0]=00 (输入模式) 时:
      • 00: 模拟模式
      • 01: 浮空输入(复位状态)
      • 10: 带上拉/下拉的输入
      • 11: 保留
    • MODEy[1:0] > 00 (输出模式) 时:
      • 00: 通用推挽输出
      • 01: 通用开漏输出
      • 10: 复用推挽输出
      • 11: 复用开漏输出
  • MODEy[1:0] (Port x mode bits) 是用来配置对应的 I/O 口的工作速率的:

    • 00: 输入模式(复位状态)
    • 01: 输出模式,最大速度 10 MHz
    • 10: 输出模式,最大速度 2 MHz
    • 11: 输出模式,最大速度 50 MHz

设置引脚高低电平寄存器

这里可以设置某一组的高低电平,我们可以先读出来,然后修改,再写入,这样就可以设置对应的高低电平了:
在这里插入图片描述
这样是比较低效的,STM32他提供了set/reset寄存器:
在这里插入图片描述
其中BSy就是设置,BRy清除

我们通过设置他们为1还是0就可以控制他们是有效还是无效

寻找寄存器地址

在这里插入图片描述
在这里插入图片描述
比如以RCC APB2地址为例子:
RCC为0x4002 1000为基地址,再+0x18为他的完整地址


总结

通过本文,我们了解了如何使用STM32的ARM架构操作寄存器来控制LED。虽然这只是STM32强大功能的冰山一角,但是通过掌握这些基础知识,我们可以进一步探索STM32的其他功能,如串口通信、定时器控制等。希望本文能为你在STM32编程的道路上提供一些帮助和启发。在实际应用中,你可能需要根据具体的硬件设备和需求进行一些调整和优化。

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

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

相关文章

Groovy vs Kotlin 在Gradle配置文件中的差异与选择

人不走空 🌈个人主页:人不走空 💖系列专栏:算法专题 ⏰诗词歌赋:斯是陋室,惟吾德馨 目录 🌈个人主页:人不走空 💖系列专栏:算法专题 ⏰诗词歌…

beyond Compare连接 openWrt 和 VsCode

连接步骤总结 1. 新建会话 -> 文件夹比较 2.点击浏览文件夹 3.在弹出页面 配置 ftp 3.1)选中ftp 配置文件 3.2)选中ssh2 3.3)填写我们需要远端连接的主机信息 先点击连接并浏览 得到下方文件夹 弹出无效登录,说明需要密码 我们返回右键刚刚创建的新 …

C++ | Leetcode C++题解之第227题基本计算器II

题目&#xff1a; 题解&#xff1a; class Solution { public:int calculate(string s) {vector<int> stk;char preSign ;int num 0;int n s.length();for (int i 0; i < n; i) {if (isdigit(s[i])) {num num * 10 int(s[i] - 0);}if (!isdigit(s[i]) &&am…

数据分析入门指南:表结构数据(三)

在数字化转型的浪潮中&#xff0c;表结构数据作为企业决策支持系统的核心要素&#xff0c;其重要性日益凸显。本文深入剖析了表结构数据的本质特征、高效处理策略&#xff0c;并探讨了其在现代商业智能环境中的广泛应用&#xff0c;旨在为数据分析师与决策者提供前沿洞察与实战…

人工智能算法工程师(中级)课程3-sklearn机器学习之数据处理与代码详解

大家好&#xff0c;我是微学AI,今天给大家分享一下人工智能算法工程师(中级)课程3-sklearn机器学习之数据处理与代码详解。 Sklearn&#xff08;Scikit-learn&#xff09;是一个基于Python的开源机器学习库&#xff0c;它提供了简单有效的数据挖掘和数据分析工具。Sklearn包含了…

华为HCIP Datacom H12-821 卷34

1.单选题 防火墙默认已经创建了一些安全区域,以下哪一个安全区域不是防火墙上默认存在的? A、Trust B、DMZ C、Internet D、Local 正确答案&#xff1a; C 解析&#xff1a; 防火墙默认情况下为我们提供了三个安全区域&#xff0c;分别是 Trust、DMZ和Untrust 2.判断题 …

【国产开源可视化引擎Meta2d.js】鹰眼地图

鹰眼地图 画布右下角弹出一个缩略导航地图&#xff0c;鼠标点击可以跳到指定位置。 在线体验&#xff1a; 乐吾乐2D可视化 示例&#xff1a; // 显示缩略地图 meta2d.showMap();// 关闭缩略地图 meta2d.hideMap();

谷歌内置AI部署

感谢阅读 准备工作开启功能查看下载情况安装插件效果截图网页版地址&#xff08;需进行前面的所有步骤&#xff09; 准备工作 点我下载谷歌dev版本 注意这个版本不需要卸载之前版本 开启功能 使用下载的浏览器依次导航到下面两个地方&#xff0c;然后点击enablebypass以及en…

2025最新付费进群系统源码 修复版

2025最新付费进群系统 修复一堆bug 修复分销无法添加 易支付只能在文件里更改等等问题 源码下载&#xff1a;https://download.csdn.net/download/m0_66047725/89515782 更多资源下载&#xff1a;关注我。

【结构型模式-代理模式】

概述 由于某些原因需要给某对象提供一个代理以控制该对象的访问。这时&#xff0c;访问对象不适合或者不能直接引用目标对象&#xff0c;代理对象作为访问对象与目标对象之间的中介。 Java中的代理按照代理类生成时机不同又分为静态代理和动态代理。静态代理代理类在编译期就生…

MACOS查看硬盘读写量

一、安装Homebrew 按照提示进行安装 /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"二、安装smartmontools brew install smartmontools三、查看硬盘读写量等信息 sudo smartctl -a /dev/disk0

WPF 制作一个文字漂浮提示框

WPF好像没有自带的文字提示漂浮&#xff0c;我们可以定制一个。 效果如下&#xff1a; xaml xaml如下&#xff1a; <Window x:Class"GroupServer.MsgTip"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://sc…

谷粒商城学习笔记-23-分布式组件-SpringCloud Alibaba-Nacos配置中心-简单示例

之前已经学习了使用Nacos作为注册中心&#xff0c;这一节学习Nacos另外一个核心功能&#xff1a;配置中心。 一&#xff0c;Nacos配置中心简介 Nacos是一个易于使用的平台&#xff0c;用于动态服务发现和配置管理。作为配置中心&#xff0c;Nacos提供了以下核心功能和优势&am…

微软推出全新的学习网站 Microsoft Learn

微软官方宣布推出全新的学习网站 Microsoft Learn&#xff0c;供开发人员学习 Microsoft 技术。 该网站包含所有 Microsoft 产品和服务(从 HoloLens 到 Azure)的技术文档。提供了超过 80 小时的学习内容&#xff0c;涉及 Azure、Dynamics 365、PowerApps、Microsoft Flow 和 Po…

VSTO插件功能介绍-清除空行【进化过程】

大家看到的是完成的成果&#xff0c; 可能不知在其中&#xff0c;写码人的艰辛 今天的主要是记录【进化过程】 用于自勉&#xff0c;与大家共勉&#xff0c;努力 文章中的代码你可复制使用哦 想要的效果若用户选择了区域&#xff0c;选择确定Button对此区域&#xff0c;进行清除…

前端vue 实现取色板 的选择

大概就是这样的 一般的web端框架 都有自带的 的 比如 ant-design t-design 等 前端框架 都是带有这个的 如果遇到没有的我们可以自己尝试开发一下 简单 的 肯定比不上人家的 但是能用 能看 说的过去 我直接上代码了 其实这个取色板 就是一个input type 是color 的input …

CTF学习记录(一)——Web基础

目录 Web基础Web基础常用工具ncat(网络工具中的瑞士军刀&#xff0c;功能齐全)curl(一个工作在命令行的发起HTTP请求的工具)BurpSuite(Web核心抓包工具)Hackbar插件SwitchyOmega 代理插件&#xff08;非常牛逼&#xff09;Wappalyzer 技术判断插件EditThisCookie 插件Postman 接…

【计算机网络03】不花钱怎么搭建一个网络实验室

使用GNS3和虚拟机搭建网络实验室 1、安装抓包工具分析数据包2、定义和使用抓包筛选器3、安装和配置GNS34、配置路由器和VPCS5、使用WireShark捕获GNS3网络数据包6、VMware创建虚拟机7、使用思科PacketTracer 1、安装抓包工具分析数据包 官网安装wireshark&#xff1a;https://…

python怎么判断字符串以什么结尾

在python编辑器中新建一个data.py。 写上自己的注释。 然后新建一个变量testname。 利用endswith来判断字符串是不是以“ar”结尾。 将结果打印出来。 选择“run”->“run”。 运行该程序&#xff0c;如果是&#xff0c;就会返回true。

JavaScript-日期对象

日期对象 作用&#xff1a;用来表示时间的对象 获取当前时间 const datenew Date();console.log(date);可以得到日期对象&#xff0c;里面的属性有星期&#xff0c;年月日&#xff0c;时分秒 获取指定时间 const datenew Date(2023-05-01);console.log(date); 获取时间戳 时间…