亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码

專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> STM32 >> 瀏覽文章

第二個(gè)應(yīng)用:LED流水燈

作者:huqin   來源:本站原創(chuàng)   點(diǎn)擊數(shù):  更新時(shí)間:2014年04月19日   【字體:

  流水燈也叫跑馬燈,就是一排燈光交替點(diǎn)亮,從視覺上來說就像燈光在運(yùn)動(dòng),下面我們將使用Rainbow板載的LED資源來實(shí)現(xiàn)一個(gè)簡(jiǎn)單的LED流水燈。

    目的:
        1、熟悉Rainbow中如何設(shè)置GPIO模式、通過GPIO輸出高低電平
        2、了解Rainbow的延時(shí)函數(shù)

    所需硬件:
        1、Rainbow開發(fā)板
        2、USB-TTL模塊
        3、杜邦線 若干
        4、J-LINK或者ST-LINK

    所需軟件:
        1、MDK5.0(Keil5)
        2、串口及網(wǎng)絡(luò)調(diào)試工具
        3、Rainbow開發(fā)包

    ST提供的固件庫對(duì)STM32系列MCU的標(biāo)準(zhǔn)外設(shè)已經(jīng)做了封裝,相對(duì)于直接操作寄存器來說已經(jīng)方便很多了,使用GPIO的一般步驟是:初始化系統(tǒng)時(shí)鐘、初始化GPIO時(shí)鐘、設(shè)置GPIO模式、設(shè)置GPIO的輸出電平,整個(gè)初始化設(shè)置好幾十行代碼,實(shí)際上達(dá)到的目的卻非常簡(jiǎn)單。Rainbow借鑒了Arduino開源硬件的思想,對(duì)GPIO進(jìn)行了進(jìn)一步的封裝,簡(jiǎn)化了GPIO的表示方式,對(duì)于GPIOA-GPIOC管腳,直接使用PA0-PA15、PB0-PB15、PC0-PC15來表示。要使用一個(gè)GPIO,僅僅兩個(gè)步驟即可:
    1、設(shè)置GPIO管腳模式:調(diào)用pinMode函數(shù)
         函數(shù)原型:void pinMode(GPIOPinName pinName, GPIOMode_TypeDef pinMode)
         功能:設(shè)置指定GPIO的管腳模式
         參數(shù):pinName 管腳的名稱,如PA0、PB15等
               pinMode 管腳的輸入輸出模式,參見ST固件庫GPIOMode_TypeDef類型。GPIO_Mode_Out_PP表示
                       推挽輸出模式

    2、使用digitalWrite()在指定管腳輸出高低電平
         函數(shù)原型:void digitalWrite(GPIOPinName pinName, uint8_t val)
         功能:向指定的管腳寫入HIGH或LOW
         參數(shù):pinName 管腳的名稱,如PA0、PB15等
               val 管腳輸出的值:HIGH或者LOW

    軟件延時(shí)在嵌入式開發(fā)中必不可少,Rainbow通過利用STM32單片機(jī)中的SysTick進(jìn)行了相對(duì)精確的延時(shí),可以支持毫秒級(jí)延時(shí)和微秒級(jí)延時(shí),其中毫秒級(jí)比較準(zhǔn)確,微秒級(jí)有一定誤差,但是比起使用指令延時(shí)來說已經(jīng)精確很多了。毫秒級(jí)延時(shí)使用delay()函數(shù),其參數(shù)指定延時(shí)的毫秒數(shù);delayMicroseconds()進(jìn)行微秒級(jí)延時(shí),其參數(shù)指定延時(shí)的微妙數(shù)。

    我們建立一個(gè)工程Led,并將Rainbow開發(fā)包導(dǎo)入到工程中,為了快速上手,在軟件包的“QuickStart”文件夾中的Led工程是一個(gè)我們預(yù)先建立好的工程,可以直接進(jìn)行編譯、燒寫和調(diào)試。

    創(chuàng)建main.cpp,并輸入下列代碼:
#include "WProgram.h"

int main(void)
{
    //流水燈對(duì)應(yīng)的管腳
    GPIOPinName ledPins[] = {LED1_PIN, LED2_PIN, LED3_PIN, LED4_PIN};
    uint8_t i;

    //初始化開發(fā)板
    boardInit();
    //設(shè)置led輸出口的模式為推挽輸出模式,并關(guān)閉所有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++)
        {
            //點(diǎn)亮LED
            digitalWrite(ledPins[i], LOW);
            //延時(shí)500ms
            delay(500);
            //滅掉LED
            digitalWrite(ledPins[i], HIGH);
        }
    }
}

    在編譯器中編譯無誤,通過ST-LINK燒寫到Rainbow后,就會(huì)看到LED交替點(diǎn)亮和熄滅,實(shí)現(xiàn)了流水燈的效果。

關(guān)閉窗口

相關(guān)文章