久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

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

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

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

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

    目的:
        1、熟悉Rainbow中如何設(shè)置GPIO模式、通過GPIO輸出高低電平
        2、了解Rainbow的延時函數(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提供的固件庫對STM32系列MCU的標準外設(shè)已經(jīng)做了封裝,相對于直接操作寄存器來說已經(jīng)方便很多了,使用GPIO的一般步驟是:初始化系統(tǒng)時鐘、初始化GPIO時鐘、設(shè)置GPIO模式、設(shè)置GPIO的輸出電平,整個初始化設(shè)置好幾十行代碼,實際上達到的目的卻非常簡單。Rainbow借鑒了Arduino開源硬件的思想,對GPIO進行了進一步的封裝,簡化了GPIO的表示方式,對于GPIOA-GPIOC管腳,直接使用PA0-PA15、PB0-PB15、PC0-PC15來表示。要使用一個GPIO,僅僅兩個步驟即可:
    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

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

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

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

int main(void)
{
    //流水燈對應(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++)
        {
            //點亮LED
            digitalWrite(ledPins[i], LOW);
            //延時500ms
            delay(500);
            //滅掉LED
            digitalWrite(ledPins[i], HIGH);
        }
    }
}

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

關(guān)閉窗口

相關(guān)文章

主站蜘蛛池模板: 午夜视频在线播放 | 国产a区 | 亚洲精彩视频在线观看 | 精品欧美激情在线观看 | 99re热精品视频 | 欧美成人自拍视频 | 免费视频一区 | 国产福利资源在线 | 成人教育av | 亚洲精品美女 | 一区中文 | 91精品国产乱码麻豆白嫩 | 天天操综合网站 | 美女爽到呻吟久久久久 | 欧美综合在线视频 | 九九久久国产 | 九九热精品视频在线观看 | 国际精品鲁一鲁一区二区小说 | 国产成人99久久亚洲综合精品 | jizz亚洲人 | 一区二区三区四区在线视频 | 国产99免费视频 | 久久久精品一区 | 欧美激情在线精品一区二区三区 | 久久久久久a | 亚洲成人自拍 | 台湾a级理论片在线观看 | 特黄色一级毛片 | 久久久久久久一区二区三区 | 国产一区二区a | 中文字幕精品视频 | 日韩手机视频 | 亚洲视频中文字幕 | 国产盗摄视频 | 午夜男人的天堂 | 中文字幕高清免费日韩视频在线 | 国产精品日韩高清伦字幕搜索 | 国产成人精品一区二区三区 | 男人的天堂久久 | 国产精品精品久久久 | 国产伦一区二区三区视频 |