0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于單片機(jī)的Led跑馬燈實(shí)現(xiàn)

CHANBAEK ? 來(lái)源:凌云物聯(lián)網(wǎng)實(shí)驗(yàn)室 ? 作者:郭工 ? 2022-12-19 09:23 ? 次閱讀

2.1 原理圖分析

查看EK-RA6M4的原理圖,如下圖所示,該開發(fā)板上有3個(gè)Led指示燈。

圖片

根據(jù)原理圖可知,這三個(gè)Led的控制邏輯為:

Led燈 LED3 LED2 LED1
顏色 紅色 綠色 藍(lán)色
引腳 P400 P404 P415
電平 高電平亮、低電平滅 高電平亮、低電平滅 高電平亮、低電平滅

2.2 創(chuàng)建工程

在開始菜單的FSP v4.1.0里點(diǎn)擊運(yùn)行e2studio。然后點(diǎn)擊 File -> Switch Workspace -> Other... ,然后選擇剛才創(chuàng)建的工作路徑并點(diǎn)擊 Launch啟動(dòng)。

圖片

接下來(lái)點(diǎn)擊 File -> C/C++ Project 創(chuàng)建 Renesas RA C/C++ Project 。接下來(lái)設(shè)置我們的項(xiàng)目名為 MyBoard 。

圖片

在接下來(lái)的配置中,我們定制開發(fā)我們的開發(fā)板,Board選擇“Custom User Board (Any Device) ”,Device選擇"R7FA6M4AF3CFB",以及燒錄調(diào)試器的類型。下一步我們就選擇 Flat (Non-TrustZone) Project 。

圖片

接下來(lái)的操作系統(tǒng)類型,選擇 No RTOS 。

圖片

項(xiàng)目模板選擇 Bare Metal -Minimal

圖片

接下來(lái),創(chuàng)建好的項(xiàng)目如下圖所示。

圖片

2.3 Pins引腳配置

接下來(lái)我們打開項(xiàng)目中的FSP配置文件,配置三個(gè)Led燈的引腳為GPIO模式,并分別配置它們的別名為L(zhǎng)edRed(P400)、LedGreen(P404)、LedBlue(P415)。

圖片

  • 通過(guò) Symbolic Name 字段可以修改該GPIO的名稱為 LedRed,它將在IDE自動(dòng)生成的文件 ra_cfg/fsp_cfg/bsp/bsp_pin_cfg.h 中定義;
  • 通過(guò) Mode 字段可以修改GPIO口的工作模式,它們將在IDE自動(dòng)生成的文件 ra_gen/pin_data.c 中定義;

然后再配置使能外部晶振,并重新生成代碼。

圖片

2.4 Stack配置

e2studio生成的項(xiàng)目,默認(rèn)添加的GPIO的stack,這里我們不需要進(jìn)行任何的修改。

圖片

2.5 源碼修改

接下來(lái),我們使用添加 src/bsp_led.h 頭文件,在里面添加Led的相關(guān)定義及操作函數(shù)聲明如下:

#ifndef BSP_LED_H_
#define BSP_LED_H_

/** Information on how many LEDs and what pins they are on. */
typedef struct st_bsp_leds
{
    uint16_t         led_count;        ///< The number of LEDs on this board
    uint16_t const * p_leds;           ///< Pointer to an array of IOPORT pins for controlling LEDs
} bsp_leds_t;

/** Available user-controllable LEDs on this board. These enums can be can be used to index into the array of LED pins
 * found in the bsp_leds_t structure. */
typedef enum e_bsp_led
{
    BSP_LEDBLUE,                      ///< LED1
    BSP_LEDGREEN,                     ///< LED2
    BSP_LEDRED,                       ///< LED3
} bsp_led_t;

/** Available user-controllable LEDs on this board. These enums can be used to turn on/off LED. */
typedef enum e_bsp_led_status
{
    BSP_LEDOFF,                      ///< Turn off LED
    BSP_LEDON,                       ///< Turn on  LED
} bsp_led_status_t;

extern const bsp_leds_t g_bsp_leds;

extern void turn_led(bsp_led_t which, bsp_led_status_t status);

#endif /* BSP_LED_H_ */

然后再添加 src/bsp_led.c 源文件如下:

#include "bsp_api.h"
#include "bsp_led.h"
#include "bsp_pin_cfg.h"

/** Array of LED IOPORT pins. */
static const uint16_t g_bsp_prv_leds[] =
{
    (uint16_t) LedBlue,
    (uint16_t) LedGreen,
    (uint16_t) LedRed,
};


/** Structure with LED information for this board. */
const bsp_leds_t g_bsp_leds =
{
    .led_count = (uint16_t) ((sizeof(g_bsp_prv_leds) / sizeof(g_bsp_prv_leds[0]))),
    .p_leds    = &g_bsp_prv_leds[0]
};

/** Function to turn Led on or off for this board. */
void turn_led(bsp_led_t which, bsp_led_status_t status)
{
    if(which >= g_bsp_leds.led_count )
    {
        return ;
    }

    if( BSP_LEDOFF == status )
    {
        R_BSP_PinWrite(g_bsp_leds.p_leds[which], BSP_IO_LEVEL_LOW);
    }
    else
    {
        R_BSP_PinWrite(g_bsp_leds.p_leds[which], BSP_IO_LEVEL_HIGH);
    }
}

接下來(lái),我們可以修改 src/hal_entry.c 源文件,在里面添加毫秒級(jí)延時(shí)宏函數(shù) delay_ms() 以及 Led 跑馬燈的控制代碼。

#include "bsp_led.h"

#define delay_ms(ms)  R_BSP_SoftwareDelay(ms, BSP_DELAY_UNITS_MILLISECONDS)
... ...

void hal_entry(void)
{
    /* TODO: add your own code here */

#if BSP_TZ_SECURE_BUILD
    /* Enter non-secure code */
    R_BSP_NonSecureEnter();
#endif

    R_BSP_PinAccessEnable(); /* Enable access to the PFS registers. */
    while (1)
    {
        turn_led(BSP_LEDBLUE, BSP_LEDON);
        delay_ms(250);
        turn_led(BSP_LEDBLUE, BSP_LEDOFF);

        turn_led(BSP_LEDGREEN, BSP_LEDON);
        delay_ms(250);
        turn_led(BSP_LEDGREEN, BSP_LEDOFF);

        turn_led(BSP_LEDRED, BSP_LEDON);
        delay_ms(250);
        turn_led(BSP_LEDRED, BSP_LEDOFF);

        delay_ms(350);
    }
}
  • R_BSP_PinAccessEnable() 函數(shù)必須使能,否則不能操作GPIO的寄存器

2.5 編譯運(yùn)行

代碼修改完成后,在開發(fā)板上編譯運(yùn)行,會(huì)發(fā)現(xiàn)三個(gè)Led跑馬燈運(yùn)行。

圖片

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • led
    led
    +關(guān)注

    關(guān)注

    242

    文章

    23278

    瀏覽量

    660947
  • 單片機(jī)
    +關(guān)注

    關(guān)注

    6037

    文章

    44558

    瀏覽量

    635408
  • 瑞薩
    +關(guān)注

    關(guān)注

    35

    文章

    22309

    瀏覽量

    86325
  • 跑馬燈
    +關(guān)注

    關(guān)注

    5

    文章

    117

    瀏覽量

    34785
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    單片機(jī)的P0端口如何去實(shí)現(xiàn)LED跑馬燈

    單片機(jī)的P0端口如何去實(shí)現(xiàn)LED跑馬燈呢?如何對(duì)其進(jìn)行Proteus仿真呢?
    發(fā)表于 10-19 09:36

    如何利用51單片機(jī)點(diǎn)亮LED實(shí)現(xiàn)跑馬燈效果?

    如何利用51單片機(jī)點(diǎn)亮LED實(shí)現(xiàn)跑馬燈效果?
    發(fā)表于 11-08 06:19

    跑馬燈

    跑馬燈設(shè)計(jì),51單片機(jī)C語(yǔ)言程序,調(diào)試成功可運(yùn)行。
    發(fā)表于 05-09 09:41 ?5次下載

    基于單片機(jī)跑馬燈程序及電路設(shè)計(jì)

    基于單片機(jī)跑馬燈程序及電路設(shè)計(jì)
    發(fā)表于 05-15 10:07 ?39次下載

    基于proteus的七種跑馬燈效果的實(shí)現(xiàn)

    本文介紹了在Proteus軟件中實(shí)現(xiàn)聯(lián)合仿真51單片機(jī)實(shí)現(xiàn)七種跑馬燈效果。七種跑馬燈效果,驚喜不斷!
    發(fā)表于 12-18 13:44 ?2.1w次閱讀
    基于proteus的七種<b class='flag-5'>跑馬燈</b>效果的<b class='flag-5'>實(shí)現(xiàn)</b>

    如何用51單片機(jī)數(shù)碼管實(shí)現(xiàn)跑馬燈功能?

    基于51單片機(jī)學(xué)習(xí)板。用S1鍵作為控制跑馬燈的方向按鍵,S5鍵作為控制跑馬燈方向的加速度按鍵,S9鍵作為控制跑馬燈方向的減速度按鍵,S13鍵作為控制
    的頭像 發(fā)表于 07-20 11:41 ?1.4w次閱讀
    如何用51<b class='flag-5'>單片機(jī)</b>數(shù)碼管<b class='flag-5'>實(shí)現(xiàn)</b><b class='flag-5'>跑馬燈</b>功能?

    使用51單片機(jī)實(shí)現(xiàn)LED跑馬燈功能的電路和程序免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是使用51單片機(jī)實(shí)現(xiàn)LED跑馬燈功能的電路和程序免費(fèi)下載。
    發(fā)表于 08-07 17:33 ?4次下載
    使用51<b class='flag-5'>單片機(jī)</b><b class='flag-5'>實(shí)現(xiàn)</b><b class='flag-5'>LED</b><b class='flag-5'>跑馬燈</b>功能的電路和程序免費(fèi)下載

    使用單片機(jī)實(shí)現(xiàn)跑馬燈的實(shí)驗(yàn)資料合集免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是使用單片機(jī)實(shí)現(xiàn)跑馬燈的實(shí)驗(yàn)資料合集免費(fèi)下載。
    發(fā)表于 08-02 17:34 ?3次下載
    使用<b class='flag-5'>單片機(jī)</b><b class='flag-5'>實(shí)現(xiàn)</b><b class='flag-5'>跑馬燈</b>的實(shí)驗(yàn)資料合集免費(fèi)下載

    使用8051單片機(jī)實(shí)現(xiàn)跑馬燈的匯編語(yǔ)言免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是使用8051單片機(jī)實(shí)現(xiàn)跑馬燈的匯編語(yǔ)言免費(fèi)下載。
    發(fā)表于 07-19 17:38 ?6次下載
    使用8051<b class='flag-5'>單片機(jī)</b><b class='flag-5'>實(shí)現(xiàn)</b><b class='flag-5'>跑馬燈</b>的匯編語(yǔ)言免費(fèi)下載

    使用51單片機(jī)實(shí)現(xiàn)跑馬燈的程序免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是使用51單片機(jī)實(shí)現(xiàn)跑馬燈的程序免費(fèi)下載。
    發(fā)表于 07-04 17:41 ?2次下載
    使用51<b class='flag-5'>單片機(jī)</b><b class='flag-5'>實(shí)現(xiàn)</b><b class='flag-5'>跑馬燈</b>的程序免費(fèi)下載

    使用單片機(jī)實(shí)現(xiàn)跑馬燈的仿真電路圖和工程文件免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是使用單片機(jī)實(shí)現(xiàn)跑馬燈的仿真電路圖和工程文件免費(fèi)下載。
    發(fā)表于 05-12 17:51 ?24次下載
    使用<b class='flag-5'>單片機(jī)</b><b class='flag-5'>實(shí)現(xiàn)</b><b class='flag-5'>跑馬燈</b>的仿真電路圖和工程文件免費(fèi)下載

    STC單片機(jī)實(shí)現(xiàn)跑馬燈的C51程序免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是STC單片機(jī)實(shí)現(xiàn)跑馬燈的C51程序免費(fèi)下載。
    發(fā)表于 06-05 17:35 ?23次下載
    STC<b class='flag-5'>單片機(jī)</b><b class='flag-5'>實(shí)現(xiàn)</b><b class='flag-5'>跑馬燈</b>的C51程序免費(fèi)下載

    使用單片機(jī)實(shí)現(xiàn)跑馬燈的程序免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是使用單片機(jī)實(shí)現(xiàn)跑馬燈的程序免費(fèi)下載。
    發(fā)表于 06-18 08:00 ?2次下載
    使用<b class='flag-5'>單片機(jī)</b><b class='flag-5'>實(shí)現(xiàn)</b><b class='flag-5'>跑馬燈</b>的程序免費(fèi)下載

    51單片機(jī)實(shí)驗(yàn)——跑馬燈實(shí)驗(yàn)

    使用STC89C51單片機(jī),書寫代碼實(shí)現(xiàn)P0口演示跑馬燈效果
    發(fā)表于 11-23 16:23 ?12次下載
    51<b class='flag-5'>單片機(jī)</b>實(shí)驗(yàn)——<b class='flag-5'>跑馬燈</b>實(shí)驗(yàn)

    基于51單片機(jī)的多模式音樂(lè)跑馬燈

    具體實(shí)現(xiàn)功能 1、16個(gè)發(fā)光二極管做跑馬燈,跑馬燈有10種模式。 2、按鍵可以切換跑馬燈模式,且跑馬燈速度可以用按鍵進(jìn)行控制。 3、數(shù)碼管顯
    的頭像 發(fā)表于 10-22 14:10 ?430次閱讀
    基于51<b class='flag-5'>單片機(jī)</b>的多模式音樂(lè)<b class='flag-5'>跑馬燈</b>