基于STM32单片机对跑马灯的控制.doc
《基于STM32单片机对跑马灯的控制.doc》由会员分享,可在线阅读,更多相关《基于STM32单片机对跑马灯的控制.doc(5页珍藏版)》请在三一文库上搜索。
1、基于STM32单片机对跑马灯的控制基于学习STM32有一段时间了,特意写下一篇关于一个简单的跑马灯的例程,梳理思路,也希望我自己的理解能帮到一些学习STM32的初学者/=/首先,GPIO的配置种类有8种。分别为模拟输入、浮空输入,上拉输入、下拉输入、开漏输出、推挽输出、复用开漏输出、复用推挽输出。下面将以实例的方式讲解GPIO的设置及实现过程。事例1:跑马灯实验跑马灯实验的功能:LED灯进行有规律闪烁。(下面的LED灯的数量都为2个,所以关于寄存器的配置也将以两组的方式进行讲解)首先要知道普通的IO就两种功能一个为输入,一个为输出。然后再以输入和输出细分为以哪种模式输出、以哪种模式输入。要设置
2、IO的模式这时就要使用到寄存器进行设置,STM32的IO端口一般由7个寄存器来进行控制。分别为(1)配置模式的2个32位的端口配置寄存器 CRL 和 CRH;(2)2 个 32 位的数据寄存器 IDR 和 ODR;(3)1 个 32 位的置位/复位寄存器BSRR;(4)1个 16 位的复位寄存器 BRR;(5)1 个 32 位的锁存寄存器 LCKR;而我们常用的 IO 端口寄存器只有 4 个:CRL、CRH、IDR、ODR。首先,一般一个程序的开始都会从入口main函数开始执行,而一个功能的实现之前都需要做一些准备工作,当然跑马灯也不例外,在程序执行前,IO需要初始化,而初始化要做的就是对程序
3、需要用到的GPIO的寄存器进行配置。然后设定输出设备的初始状态,即跑马灯的初始状态。一般程序在执行前,输出设备都会是处于关闭状态。最后增加延时函数,让LED灯在亮与灭之间有一段时间的状态保留,不然时间过快,人类的视觉根本捕抓它的状态变化。下面来讲一下实现跑马灯效果的IO要怎么配置。首先先说一下使用LED来进行跑马功能的话只需要用到RCC-APB2ENR、GPIOX-CRL、GPIOX-ODR三个寄存器(GPIOX中的X表示为GPIO的组别,例如GPIOB表示在GPIO的B组上,因为一般单片机上的GPIO一般都会有很多组的,这样也只是为了区分这些IO罢了)CRL 和 CRH 控制着每个 IO 口
4、的模式及输出速率。这里需要注意的是在配置GPIO前,都需要先使能该GPIO的时钟!(可能有人会问“为什么一定要是使能时钟呢?”答案是:GPIO也是外设的一种,然后外设是需要提供时钟信号工作,以便于设置GPIO的数据传输速度的高速/低速输出,所以有关数据的传输都是在时钟信号的基础上的。51单片的IO口也有时钟,只是为了方便,默认开启的,ST的为了更好的控制功耗,电路上做的可以选择开关时钟,降低功耗。补充网友的答案:“寄存器是基于触发器的,触发器的赋值是一定需要时钟的,而寄存器的时钟是由总线时钟提供的,就是说没有总线时钟的话,你给寄存器值它是不会读入的”)然后设置两个LED的GPIO的模式,因为L
5、ED是输出设备,所以GPIO将设置成输出模式,其中配置模式要用到的寄存器为配置寄存器CRL和CRH。其中CRH为高位寄存器,CRL为低位寄存器。(有人可能有疑问为什么用的是32位的寄存器为什么还要为两个寄存器来管理呢?难道是32位还不够配置吗?答案是:是的,不够用。配置寄存器对一个GPIO的配置要用4个位来完成。一组GPIO有16个引脚,一个引脚要4位的话,那么16个引脚就要16*4=64,那么就要2个32位的寄存器来实现,所以就干脆把高八位给一个寄存器,低八位给另外一个寄存器,这就出现了CRL和CRH。也许有人还会有疑问说为什么一定要用4位来对一个引脚的配置呢?答案是肯定的,因为前面说了,对
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 STM32 单片机 跑马 控制
链接地址:https://www.31doc.com/p-3412116.html