熟悉Rainbow开发板第二个应用:LED流水灯


 

关热词:Rainbow  开发板  LED流水灯  

    流水灯也叫跑马灯,就是一排灯光交替点亮,从视觉上来说就像灯光在运动,下面我们将使用Rainbow板载的LED资源来实现一个简单的LED流水灯。

目的:

1、熟悉Rainbow中如何设置GPIO模式、通过GPIO输出高低电平

2、了解Rainbow的延时函数

 所需硬件:

1、Rainbow开发板

2、USB-TTL模块

3、杜邦线 若干

4、J-LINK或者ST-LINK

所需软件:

1、MDK5.0(Keil5)

2、串口及网络调试工具

3、Rainbow开发包

    ST提供的固件库对STM32系列MCU的标准外设已经做了封装,相对于直接操作寄存器来说已经方便很多了,使用GPIO的一般步骤是:初始化系统时钟、初始化GPIO时钟、设置GPIO模式、设置GPIO的输出电平,整个初始化设置好几十行代码,实际上达到的目的却非常简单。Rainbow借鉴了Arduino开源硬件的思想,对GPIO进行了进一步的封装,简化了GPIO的表示方式,对于GPIOA-GPIOC管脚,直接使用PA0-PA15、PB0-PB15、PC0-PC15来表示。要使用一个GPIO,仅仅两个步骤即可:

1、设置GPIO管脚模式:调用pinMode函数

    函数原型:void pinMode(GPIOPinName pinName, GPIOMode_TypeDef pinMode)

    功能:设置指定GPIO的管脚模式

    参数:pinName 管脚的名称,如PA0、PB15等

    pinMode 管脚的输入输出模式,参见ST固件库GPIOMode_TypeDef类型。GPIO_Mode_Out_PP表示
                       推挽输出模式

2、使用digitalWrite()在指定管脚输出高低电平

    函数原型:void digitalWrite(GPIOPinName pinName, uint8_t val)

    功能:向指定的管脚写入HIGH或LOW

    参数:pinName 管脚的名称,如PA0、PB15等

    val 管脚输出的值:HIGH或者LOW

    软件延时在嵌入式开发中必不可少,Rainbow通过利用STM32单片机中的SysTick进行了相对精确的延时,可以支持毫秒级延时和微秒级延时,其中毫秒级比较准确,微秒级有一定误差,但是比起使用指令延时来说已经精确很多了。毫秒级延时使用delay()函数,其参数指定延时的毫秒数;delayMicroseconds()进行微秒级延时,其参数指定延时的微妙数。

    我们建立一个工程Led,并将Rainbow开发包导入到工程中,为了快速上手,在软件包的“QuickStart”文件夹中的Led工程是一个我们预先建立好的工程,可以直接进行编译、烧写和调试。

创建main.cpp,并输入下列代码:

#include "WProgram.h"

int main(void)
{
    //流水灯对应的管脚
    GPIOPinName ledPins[] = {LED1_PIN, LED2_PIN, LED3_PIN, LED4_PIN};
    uint8_t i;

    //初始化开发板
    boardInit();
    //设置led输出口的模式为推挽输出模式,并关闭所有LED
    for(i=0; i<4; i++)
    {
        pinMode(ledPins[i], GPIO_Mode_Out_PP);
        digitalWrite(ledPins[i], HIGH);
    }

    while(1)
    {
        for(i=0; i<4; i++)
        {
            //点亮LED
            digitalWrite(ledPins[i], LOW);
            //延时500ms
            delay(500);
            //灭掉LED
            digitalWrite(ledPins[i], HIGH);
        }
    }
}

    在编译器中编译无误,通过ST-LINK烧写到Rainbow后,就会看到LED交替点亮和熄灭,实现了流水灯的效果。

上一篇:熟悉Rainbow开发板第一个应用:从Hello,world!开始

下一篇:DIY小自行车灯制作的电路图和制作详细说明



About Us - 关于我们 - 客户服务 - 联系方式 - 给我们建议 - 器件索引 - 法律声明
北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191
电子工程世界版权所有 京ICP证060456 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534
Copyright © 2005-2015 EEWORLD.com.cn, Inc. All rights reserved