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

举报
人才程序员 发表于 2024/09/14 18:57:54 2024/09/14
【摘要】 @TOC 前言STM32是STMicroelectronics(意法半导体)公司的一款32位Flash微控制器产品,基于ARM Cortex™-M内核。STM32系列微控制器在工业控制、商业应用等领域得到了广泛的应用。本文将介绍如何使用STM32的ARM架构操作寄存器来控制LED。在嵌入式系统中,LED常常被用作简单的显示设备,可以用来指示系统的状态、运行情况等。在STM32中,我们可以通过...

@TOC


前言

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编程的道路上提供一些帮助和启发。在实际应用中,你可能需要根据具体的硬件设备和需求进行一些调整和优化。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。