STM32F103寄存器方式点亮LED流水灯

本文详细介绍了如何使用STM32F103通过寄存器方式点亮LED流水灯。内容涵盖STM32寄存器基础知识,GPIO端口初始化的三个步骤,工程模板建立,程序编写与Keil仿真,以及烧录程序的完整流程。通过实例讲解,帮助读者掌握STM32嵌入式开发。
摘要由CSDN通过智能技术生成

一、STM32寄存器简介及GPIO端口的初始化设置三步骤

1、STM32寄存器简介及找寻寄存器地址 

    寄存器是中央处理器内的组成部分。寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令数据地址。 存放数据的寄存器是最好理解的,如果你需要读取一个数据,直接到这个寄存器所在的地方来问问他,数据是多少就行了。问寄存器这个动作,叫做访问寄存器。不同的数据会存放在不同的寄存器,例如引脚PA2与PB8的高低电平数据(1或0)肯定放在不同的寄存器里,那么怎么区分不同的寄存器呢?通过地址,不同的寄存器有不同的地址,就像老张行李寄存处在101号店铺,老王行李寄存处在258号店铺。
  指令、地址寄存器与数据寄存器类似,里边存放的都是0和1,毕竟单片机也只认识机器码,机器码都是0或1,只是特别的规定下,数据寄存器里面存放的0和1表示数据,指令寄存器里存放的表示指令。

     找寻寄存器地址需要查看数据手册,但是手册中没有直接给出所有的寄存器的地址,需要读者稍加计算。STM32给不同的寄存器分配了不同的地址,有点像划分了片区。在《STM32中文参考手册_V10》的第28页,有不同寄存器的地址范围。

    例如,我们想要读取PB3引脚的电平,分为以下几步:

  •      找到GPIOB的基地址 

     也就是找到GPIOB的小区。结论是,所有GPIOB相关的寄存器,都住在0x4001 0C00到0x4001 0FFF范围内。

  •    找到端口输入寄存器的地址偏移

     找到存储数据的那个屋子,结论是0x4001 0C00+8 = 0x4001 0C08 

  •     找到知道数据的那个人  

      PB3的数据位于从右往左数第4个。 

   而这个寄存器的位数是32位(虽然高16位没有用到),这就是32位的单片机的意思。每个寄存器都占据4字节,32位。而CPU的总线一次可以操作32位,所以比8位单片机厉害一点。
   经过这三步查找,我们可以做出以下结论:
   PB3的输入数据位于0x4001 0C08这个地址上,这个地址上存放数据的右起第4个位就是PB3引脚对应的高低电平。

参考文献:https://blog.csdn.net/geek_monkey/article/details/86291377
 

2、GPIO端口初始化 

   GPIO端口的初始化设置可以大致分三步骤:时钟配置、输入输出模式设置、最大速率设置。本次实验中的STM32的点灯则需要通过使能外设GPIO时钟,发出指令给外设GPIO,外设GPIO收到指令后,着手配置自己的寄存器,然后给IO口模式,让其实现各种功能。
其过程可表示为:CPU给指令—>GPIO收到指令—>配置内部寄存器—>配置IO口模式—>控制LED亮灭。

二、用STM32F103点亮流水灯

1、工程模板的建立

 工程模板的建立对我们编写程序来说非常重要,但是我们自己来建立可能对入门者比较困难。我们可以在网上选择现成的工程模板文件,这些程序都是编写组织好的,将不同的功能文件做了区分,放在了不同的文件夹中,逻辑非常

  • 4
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值