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

目录

一、stm32芯片寄存器及IO口简介

二、硬件设计

2.1 IO口选择

 2.2 其余硬件

2.3 连线

三、软件设计

3.1 配置寄存器

3.2 主函数编写

3.3 程序的烧录

3.4 成果展示

四、汇编实现流水灯

五、参考文献


  本篇博客将介绍如何使用STM32F103系列芯片以寄存器的方式点亮LED流水灯,文章内容包括芯片IO口和寄存器的使用、硬件设计、软件设计、仿真与下载。希望本篇文章能够帮助你。

一、stm32芯片寄存器及IO口简介

注:本博客使用的芯片为正点原子STM32F103RC芯片,不同的32芯片在细节上也许会有不同之处。

     本博客将要实现的是控制STM32开发板上的三个IO口实现一个类似流水灯的效果,该实验的关键在于如何控制STM32的IO口输出。了解了STM32的IO口如何输出的,就可以实现流水灯了。

  STM32 的 IO 口可以由软件配置成如下 8 种模式:

  1、输入浮空

  2、输入上拉

  3、输入下拉

  4、模拟输入

  5、开漏输出

  6、推挽输出

  7、推挽式复用功能

  8、开漏复用功能

  STM32的每个IO端口都有7个寄存器来控制。他们分别是:配置模式的2个32位的端口配置寄存器CRL和CRH;2个32位的数据寄存器 IDR 和 ODR;1个32位的置位/复位寄存器BSRR;一个16位的复位寄存器BRR;1个32位的锁存寄存器LCKR;这里我们仅介绍常用的几个寄存器,我们常用的IO端口寄存器只有4个:CRL、CRH、IDR、ODR

  其中CRLCRH控制着每个IO口的模式及输出速率。

 STM32 的 IO 口位配置表如表

 STM32 输出模式配置如表 

  接下来我们看看端口低配置寄存器 CRL 的描述 

    该寄存器的复位值为0X4444 4444,从上图可以看到,复位值其实就是配置端口为浮空输入模式。从上图还可以得出:STM32 的CRL控制着每组IO端口(A~G)的低8位的模式。 每个IO端口的位占用CRL的 4 个位,高两位为CNF,低两位为MODE。这里我们可以记住几个常用的配置,比如0X0表示模拟输入模式(ADC 用)、0X3表示推挽输出模式(做输出口用,50M速率)、0X8表示上/下拉输入模式(做输入口用)、0XB表示复用输出(使用IO口的第二功能,50M速率)。

   CRH的作用和CRL完全一样,只是CRL控制的是低8位输出口,而CRH控制的是高8位输出口。这里我们对CRH就不做详细介绍了。

   给个实例,比如我们要设置PORTA的8位为上拉输入,13位为复用输出。代码如下:

GPIOA->CRH&=0XFF0FFFF0; //清掉这 2 个位原来的设置,同时也不影响其他位的设置
GPIOA->CRH|=0X00B00008;  //PA8输入,PA13输出
GPIOA->ODR=1<<8;  //PA8 上拉

    通过这3句话的配置,我们就设置了PA8为上拉输入,PA13复用输出。

   IDR是一个端口输入数据寄存器,只用了低16位。该寄存器为只读寄存器,并且只能以16位的形式读出。该寄存器各位的描述如图所示:

   要想知道某个IO口的状态,你只要读这个寄存器,再看某个位的状态就可以了。使用起来是比较简单的。

   ODR是一个端口输出数据寄存器,也只用了低16位。该寄存器为可读写,从该寄存器读出来的数据可以用于判断当前IO口的输出状态。而向该寄存器写数据,则可以控制某个IO口的输出电平。该寄存器的各位描述如图所示:

  

   了解了这几个寄存器&#x

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值