历史上的今天
今天是:2024年10月21日(星期一)
2019年10月21日 | STM32学习探究:流水灯的实现
2019-10-21 来源:eefocus
流水灯的实现
这里我们使用 stm32mini 开发板实现外接流水灯,这里我采用了三个灯(说明问题就可以了)。外接的引脚分别为PA2,PB8,PC13三个引脚,在连接的时候,采用灯的正极接GPIO引脚,负极接GND(这是一种合理的方式)。
注意:虽然接VCC也可以发光,但是这样不是合理的连接方式,而且,发光的情况刚好与接GND的情况相反。
参考的相关资料如下:
时钟使能:


端口配置:




端口输出:

具体实现的代码如下:
//led.h文件
#ifndef __LED_H
#define __LED_H
#include "sys.h"
//LED端口定义
#define LED0 PAout(2)
#define LED1 PBout(8)
#define LED2 PCout(13)
void LED_Init(void); //初始化
#endif
//led.c文件
#include "sys.h"
#include "led.h"
void LED_Init(void)
{
//PA2
RCC->APB2ENR|=1<<2; //使能PORTA时钟
GPIOA->CRL&=0XFFFFF0FF;
GPIOA->CRL|=0X00000300;//PA2 推挽输出
GPIOA->ODR|=1<<2; //A2 输出高
//PB8
RCC->APB2ENR|=1<<3; //使能PORTB时钟
GPIOB->CRH&=0XFFFFFFF0;
GPIOB->CRH|=0X00000003;//PB8 推挽输出
GPIOB->ODR|=1<<8; //PB8 输出高
//PC13
RCC->APB2ENR|=1<<4; //使能PORTC时钟
GPIOC->CRH&=0XFF0FFFFF;
GPIOC->CRH|=0X00300000;//PC13 推挽输出
GPIOC->ODR|=1<<13; //PC13 输出高
}
//test.c文件(主文件)
#include "usart.h"
#include "delay.h"
#include "led.h"
int main(void)
{
Stm32_Clock_Init(9); //系统时钟设置
delay_init(72); //延时初始化
LED_Init(); //初始化与LED连接的硬件接口
while(1)
{
//优化
LED0=1;
LED1=0;
LED2=0;
delay_ms(200);
LED0=0;
LED1=1;
LED2=0;
delay_ms(300);
LED0=0;
LED1=0;
LED2=1;
delay_ms(100);
}
}
注意:代码的每个子文件的最后都有空行,且不能去掉,因为keil软件自身的问题(我也不知道是bug还是别的什么原因,不过都不重要),去掉会报错,也就是说,编程必须以空行结尾。
如果在建立keil文件的时候,还是比较陌生,可以参考我之前的博客:
https://blog.csdn.net/jianbai_/article/details/90580887
总结
这是一个很简单的任务,为了尽量多的使用引脚,我初始化了PA,PB,PC口,当然GPIO口的选择是根据编程人员自己选择的,依据情况而定的。要想完成这个实验,也可以参考程序源码中的跑马灯实验,到时候将GPIO引脚引出来就可以,本质是一样的。
当然,我们可以多用几个灯,效果会更好点,运行成功之后,可以将其封装为一个函数,到时候可以随时调用,也比较方便。但是,如果灯多了,主函数采用上面的方法就比较麻烦,虽然容易懂,但是代码冗长,我们可以采用移位或者数组加循环的方式,这样编程者会比较轻松,代码也不会太长。
上一篇:stm32智能小车之路之小车启动
下一篇:STM32流水灯的几种实现方法
史海拾趣
|
本人从事安防行业5年,一路走来,一直在做监控摄像机这一块,发现自己组装生产摄像机,有以下几大优势,供大家参考: 第一:摄像机本身组装很简单,技术含量不高,不如自己动手,还学会了组装,与摄像机内部结构。 第二:自己组装生产摄像机,价格 ...… 查看全部问答> |
|
本帖最后由 jameswangsynnex 于 2015-3-3 19:57 编辑 自2009年年底起,3D在国内成为了“时尚”的代名词,继3D电影《阿凡达》、《爱丽丝梦游仙境》在中国市场赚得盆满钵满,3D似乎也成为了报刊企业的又一掘金点。 2010年4月16日,湖北《十堰晚 ...… 查看全部问答> |
|
先祝各位达人元旦快乐! 我老板现在想开发CDMA的通信模块,就是网上很多卖的那种,可以通过串口或其他通用接口进行CDMA无线通信,但我查了很长时间仍然没有头绪……望各位达人指点一二: 用于开发CDMA模块一般都有什么芯片?我看网上大部分都是高 ...… 查看全部问答> |
|
Powerpc现在编译的文件系统是jff2格式,用串口线先传倒powerpc的RAM里,再复制进flash,但是现在文件系统似乎限制了大小,如果传3M左右就能正常启动,如果大于4M就不能正常启动,系统会不停重启。但是如果系统能正常启动后,用FTP上传文件,则没有 ...… 查看全部问答> |
|
之前用的是vxworks+Tornado开发方式,一切比较顺利!! 最近单位买了最新版的vxworks,开发环境是workbench,刚接触,本打算先做启动软盘尝试启动vxworks,可发现每次编译后,目标机出现v1.6++++++++++++++++++然后又重起,尝试了各种方法,都是这样,请各位 ...… 查看全部问答> |
|
S3C44B0X那块板子,能在线调试并且LCD显示正常,但是将程序烧录进去后,却发现LCD没有显示了。这是怎么回事呢?有哪位大虾遇到过同样的问题吗? 做LED实验却不管在线调试还是将程序烧录进去,都能得到正确的结果。… 查看全部问答> |




