吴忠躺衫网络科技有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于單片機的Led跑馬燈實現

CHANBAEK ? 來源:凌云物聯網實驗室 ? 作者:郭工 ? 2022-12-19 09:23 ? 次閱讀

2.1 原理圖分析

查看EK-RA6M4的原理圖,如下圖所示,該開發板上有3個Led指示燈

圖片

根據原理圖可知,這三個Led的控制邏輯為:

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

2.2 創建工程

在開始菜單的FSP v4.1.0里點擊運行e2studio。然后點擊 File -> Switch Workspace -> Other... ,然后選擇剛才創建的工作路徑并點擊 Launch啟動。

圖片

接下來點擊 File -> C/C++ Project 創建 Renesas RA C/C++ Project 。接下來設置我們的項目名為 MyBoard

圖片

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

圖片

接下來的操作系統類型,選擇 No RTOS

圖片

項目模板選擇 Bare Metal -Minimal

圖片

接下來,創建好的項目如下圖所示。

圖片

2.3 Pins引腳配置

接下來我們打開項目中的FSP配置文件,配置三個Led燈的引腳為GPIO模式,并分別配置它們的別名為LedRed(P400)、LedGreen(P404)、LedBlue(P415)。

圖片

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

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

圖片

2.4 Stack配置

e2studio生成的項目,默認添加的GPIO的stack,這里我們不需要進行任何的修改。

圖片

2.5 源碼修改

接下來,我們使用添加 src/bsp_led.h 頭文件,在里面添加Led的相關定義及操作函數聲明如下:

#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);
    }
}

接下來,我們可以修改 src/hal_entry.c 源文件,在里面添加毫秒級延時宏函數 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() 函數必須使能,否則不能操作GPIO的寄存器

2.5 編譯運行

代碼修改完成后,在開發板上編譯運行,會發現三個Led跑馬燈運行。

圖片

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • led
    led
    +關注

    關注

    242

    文章

    23355

    瀏覽量

    663190
  • 單片機
    +關注

    關注

    6043

    文章

    44622

    瀏覽量

    638549
  • 瑞薩
    +關注

    關注

    35

    文章

    22310

    瀏覽量

    86746
  • 跑馬燈
    +關注

    關注

    5

    文章

    117

    瀏覽量

    34854
收藏 人收藏

    評論

    相關推薦

    單片機的P0端口如何去實現LED跑馬燈

    單片機的P0端口如何去實現LED跑馬燈呢?如何對其進行Proteus仿真呢?
    發表于 10-19 09:36

    如何利用51單片機點亮LED實現跑馬燈效果?

    如何利用51單片機點亮LED實現跑馬燈效果?
    發表于 11-08 06:19

    跑馬燈

    跑馬燈設計,51單片機C語言程序,調試成功可運行。
    發表于 05-09 09:41 ?5次下載

    基于單片機跑馬燈程序及電路設計

    基于單片機跑馬燈程序及電路設計
    發表于 05-15 10:07 ?39次下載

    基于proteus的七種跑馬燈效果的實現

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

    如何用51單片機數碼管實現跑馬燈功能?

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

    使用51單片機實現LED跑馬燈功能的電路和程序免費下載

    本文檔的主要內容詳細介紹的是使用51單片機實現LED跑馬燈功能的電路和程序免費下載。
    發表于 08-07 17:33 ?4次下載
    使用51<b class='flag-5'>單片機</b><b class='flag-5'>實現</b><b class='flag-5'>LED</b><b class='flag-5'>跑馬燈</b>功能的電路和程序免費下載

    使用單片機實現跑馬燈的實驗資料合集免費下載

    本文檔的主要內容詳細介紹的是使用單片機實現跑馬燈的實驗資料合集免費下載。
    發表于 08-02 17:34 ?3次下載
    使用<b class='flag-5'>單片機</b><b class='flag-5'>實現</b><b class='flag-5'>跑馬燈</b>的實驗資料合集免費下載

    使用8051單片機實現跑馬燈的匯編語言免費下載

    本文檔的主要內容詳細介紹的是使用8051單片機實現跑馬燈的匯編語言免費下載。
    發表于 07-19 17:38 ?6次下載
    使用8051<b class='flag-5'>單片機</b><b class='flag-5'>實現</b><b class='flag-5'>跑馬燈</b>的匯編語言免費下載

    使用51單片機實現跑馬燈的程序免費下載

    本文檔的主要內容詳細介紹的是使用51單片機實現跑馬燈的程序免費下載。
    發表于 07-04 17:41 ?2次下載
    使用51<b class='flag-5'>單片機</b><b class='flag-5'>實現</b><b class='flag-5'>跑馬燈</b>的程序免費下載

    使用單片機實現跑馬燈的仿真電路圖和工程文件免費下載

    本文檔的主要內容詳細介紹的是使用單片機實現跑馬燈的仿真電路圖和工程文件免費下載。
    發表于 05-12 17:51 ?24次下載
    使用<b class='flag-5'>單片機</b><b class='flag-5'>實現</b><b class='flag-5'>跑馬燈</b>的仿真電路圖和工程文件免費下載

    STC單片機實現跑馬燈的C51程序免費下載

    本文檔的主要內容詳細介紹的是STC單片機實現跑馬燈的C51程序免費下載。
    發表于 06-05 17:35 ?23次下載
    STC<b class='flag-5'>單片機</b><b class='flag-5'>實現</b><b class='flag-5'>跑馬燈</b>的C51程序免費下載

    使用單片機實現跑馬燈的程序免費下載

    本文檔的主要內容詳細介紹的是使用單片機實現跑馬燈的程序免費下載。
    發表于 06-18 08:00 ?2次下載
    使用<b class='flag-5'>單片機</b><b class='flag-5'>實現</b><b class='flag-5'>跑馬燈</b>的程序免費下載

    51單片機實驗——跑馬燈實驗

    使用STC89C51單片機,書寫代碼實現P0口演示跑馬燈效果
    發表于 11-23 16:23 ?12次下載
    51<b class='flag-5'>單片機</b>實驗——<b class='flag-5'>跑馬燈</b>實驗

    基于51單片機的多模式音樂跑馬燈

    具體實現功能 1、16個發光二極管做跑馬燈跑馬燈有10種模式。 2、按鍵可以切換跑馬燈模式,且跑馬燈速度可以用按鍵進行控制。 3、數碼管顯
    的頭像 發表于 10-22 14:10 ?509次閱讀
    基于51<b class='flag-5'>單片機</b>的多模式音樂<b class='flag-5'>跑馬燈</b>
    新宝娱乐| 明溪百家乐官网的玩法技巧和规则| 潘多拉百家乐官网的玩法技巧和规则| 百家乐牡丹娱乐城| 百家乐官网游戏机出千| 百家乐官网最新的投注方法| 首席百家乐的玩法技巧和规则| 玩百家乐官网新太阳城| 连环百家乐的玩法技巧和规则| 百家乐官网庄闲的分布| 大发888新闻| 2402 房号 风水| 榆树市| 百家乐是怎么赌法| 百家乐官网一邱大师打法| 亿酷棋牌世界下载| 百家乐赢赌场百家乐| 三晋棋牌中心| 百家乐图形的秘密破解| 太阳城百家乐娱乐官方网| 百家乐官网谋略| 会同县| 大发888游戏是真的么| 百家乐和的几率| 百家乐官网娱乐网网77scs| 百家乐官网傻瓜式投注法| 澳门顶级赌场国际| 杰克百家乐玩法| 致胜百家乐官网的玩法技巧和规则| bodog博狗| 威尼斯人娱乐城现金开户| 百家乐有多少种游戏| 三国百家乐官网的玩法技巧和规则| 百家乐官网如何看牌| 大发888优惠码| 大发8888备用网址| 丹东亿酷棋牌下载| 新梦想百家乐的玩法技巧和规则| 自贡百家乐赌场| 闲和庄百家乐赌场娱乐网规则| 太阳城百家乐优惠|