日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

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

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

3天內不再提示

瑞薩RA系列FSP庫開發(fā)實戰(zhàn)指南(19)使用寄存器點亮LED燈

瑞薩嵌入式小百科 ? 來源: 瑞薩MCU小百科 ? 2025-06-11 15:06 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

7.4

實驗:使用寄存器點亮LED

7.4.1

硬件設計

野火啟明6M5開發(fā)板的LED電路圖如圖所示。圖中RA6M5芯片的P400、P403、P404引腳分別通過一個2.2 KΩ的限流電阻連接到LED1、LED2、LED3這三個用戶LED燈的陰極,LED燈的陽極連接到3.3V電源。而LED4是電源指示燈,只要開發(fā)板通電就會亮。

40b636ce-468a-11f0-b715-92fbcf53809c.png

野火啟明4M2開發(fā)板的LED電路圖下圖所示。

40c51af4-468a-11f0-b715-92fbcf53809c.png

野火啟明2L1開發(fā)板的LED電路圖下圖所示。

40d210e2-468a-11f0-b715-92fbcf53809c.png

以上所示,三塊開發(fā)板的LED電路圖差別都不大,主要差別在于用于控制用戶LED燈的引腳不一樣,這一點在使用不同板子時需要注意一下引腳的配置。

7.4.2

軟件設計

7.4.2.1

新建工程

對于e2studio開發(fā)環(huán)境:拷貝一份我們之前新建的e2s工程模板“05_Template”,然后將工程文件夾重命名為“08_Register_LED”,最后再將它導入到我們的e2studio工作空間中。

對于Keil開發(fā)環(huán)境:拷貝一份我們之前新建的Keil工程模板“06_Template”,然后將工程文件夾重命名為“08_Register_LED”,并進入該文件夾里面雙擊Keil工程文件,打開該工程。

7.4.2.2

寄存器定義頭文件

當新建工程完成之后,工程里已經自動包含了這個定義寄存器的頭文件,比如:R7FA6M5BH.h頭文件。在這個頭文件里面,已經包含了芯片所有的寄存器定義,包括IOPORT外設的寄存器。

以啟明6M5開發(fā)板的RA6M5工程為例,我們在這里列出IOPORT部分寄存器定義(它們存在于寄存器定義頭文件R7FA6M5BH.h中)。

列表1:代碼清單8-1:R7FA6M5BH.h文件中的IOPORT部分寄存器定義

左右滑動查看完整內容

/**
* @brief I/O Ports (R_PORT0)
*/
typedefstruct {/*!< (@ 0x40080000) R_PORT0?
,
→Structure */
union{
union{
__IOMuint32_tPCNTR1;/*!< (@ 0x00000000) Port?
,
→Control Register 1 */


struct{
__IOMuint32_tPDR :16;/*!< [15..0] Pmn?
,
→Direction */
__IOMuint32_tPODR :16;/*!< [31..16] Pmn?
,
→Output Data */
} PCNTR1_b;
} ;
struct{
union{
__IOMuint16_tPODR;/*!< (@ 0x00000000)?
,
→Output data register */
/* ... 代碼過長省略 ... */
} ;
union{
__IOMuint16_tPDR;/*!< (@ 0x00000002)?
,
→Data direction register */
/* ... 代碼過長省略 ... */
} ;
};
};
union{
union{
__IMuint32_tPCNTR2;/*!< (@ 0x00000004) Port?
,
→Control Register 2 */
struct{
__IMuint32_tPIDR :16;/*!< [15..0] Pmn Input?
__IM uint32_t EIDR : 16; /*!< [31..16] Pmn Event?
,
→Input Data */
} PCNTR2_b;
} ;
struct{
union{
__IMuint16_tEIDR;/*!< (@ 0x00000004)?
,
→Event input data register */
/* ... 代碼過長省略 ... */
} ;
union{
__IMuint16_tPIDR;/*!< (@ 0x00000006)?
,
→Input data register */
/* ... 代碼過長省略 ... */
} ;
};
};
union{
union{
__OMuint32_tPCNTR3;/*!< (@ 0x00000008) Port?
,
→Control Register 3 */
struct{
__OMuint32_tPOSR :16;/*!< [15..0] Pmn Output?
,
→Set */
__OMuint32_tPORR :16;/*!< [31..16] Pmn?
,
→Output Reset */
} PCNTR3_b;
} ;
struct{
union{
__OMuint16_tPORR;/*!< (@ 0x00000008)?
,
→Output set register */
/* ... 代碼過長省略 ... */
} ;
union{
__OMuint16_tPOSR;/*!< (@ 0x0000000A)?
,
→Output reset register */
/* ... 代碼過長省略 ... */
} ;
};
};
union{
union{
__IOMuint32_tPCNTR4;/*!< (@ 0x0000000C) Port?
,
→Control Register 4 */
struct{
__IOMuint32_tEOSR :16;/*!< [15..0] Pmn Event?
,
→Output Set */
__IOMuint32_tEORR :16;/*!< [31..16] Pmn Event?
,
→Output Reset */
} PCNTR4_b;
} ;
struct{
union{
__IOMuint16_tEORR;/*!< (@ 0x0000000C)?
,
→Event output set register */
/* ... 代碼過長省略 ... */
} ;
union{
__IOMuint16_tEOSR;/*!< (@ 0x0000000E)?
,
→Event output reset register */
/* ... 代碼過長省略 ... */
} ;
};
};
} R_PORT0_Type;/*!< Size = 16 (0x10) ?
,
→ */
/**
* @brief I/O Ports-PFS (R_PFS)
*/
typedefstruct {/*!< (@ 0x40080800) R_PFS?
,
→Structure */
__IOM R_PFS_PORT_Type PORT[15];/*!< (@ 0x00000000) Port?
,
→[0..14] */
} R_PFS_Type;/*!< Size = 960 (0x3c0) ?
,
→ */
/**
* @brief I/O Ports-MISC (R_PMISC)
*/
typedefstruct {/*!< (@ 0x40080D00) R_PMISC?
,
→Structure */
union{
__IOMuint8_tPFENET;/*!< (@ 0x00000000)?
,
Ethernet Control Register */
/* ... 代碼過長省略 ... */
} ;
__IMuint8_tRESERVED[2];
union{
__IOMuint8_tPWPR;/*!< (@ 0x00000003) Write-
,
→Protect Register */
/* ... 代碼過長省略 ... */
} ;
__IMuint8_tRESERVED1;
union{
__IOMuint8_tPWPRS;/*!< (@ 0x00000005) Write-
,
→Protect Register for Secure */
/* ... 代碼過長省略 ... */
} ;
__IMuint16_tRESERVED2[5];
__IOM R_PMISC_PMSAR_Type PMSAR[12];/*!< (@ 0x00000010) Port?
,
→Security Attribution Register */
} R_PMISC_Type;/*!< Size = 40 (0x28) ?
,
→ */
/** @addtogroup Device_Peripheral_peripheralAddr
* @{ 外設首地址
*/
#defineR_PORT0_BASE 0x40080000UL
#defineR_PORT1_BASE 0x40080020UL
#defineR_PORT2_BASE 0x40080040UL
#defineR_PORT3_BASE 0x40080060UL
#defineR_PORT4_BASE 0x40080080UL
#defineR_PORT5_BASE 0x400800A0UL
#defineR_PORT6_BASE 0x400800C0UL
#defineR_PORT7_BASE 0x400800E0UL
#defineR_PORT8_BASE 0x40080100UL
#defineR_PORT9_BASE 0x40080120UL
#defineR_PORT10_BASE 0x40080140UL
#defineR_PORT11_BASE 0x40080160UL
#defineR_PORT12_BASE 0x40080180UL
#defineR_PORT13_BASE 0x400801A0UL
#defineR_PORT14_BASE 0x400801C0UL
#defineR_PFS_BASE 0x40080800UL
#defineR_PMISC_BASE 0x40080D00UL
/** @addtogroup Device_Peripheral_declaration
* @{ 外設寄存器聲明(定義結構體指針,指向 IOPORT 寄存器首地址)
*/
#defineR_PORT0 ((R_PORT0_Type*) R_PORT0_BASE)
#defineR_PORT1 ((R_PORT0_Type*) R_PORT1_BASE)
#defineR_PORT2 ((R_PORT0_Type*) R_PORT2_BASE)
#defineR_PORT3 ((R_PORT0_Type*) R_PORT3_BASE)
#defineR_PORT4 ((R_PORT0_Type*) R_PORT4_BASE)
#defineR_PORT5 ((R_PORT0_Type*) R_PORT5_BASE)
#defineR_PORT6 ((R_PORT0_Type*) R_PORT6_BASE)
#defineR_PORT7 ((R_PORT0_Type*) R_PORT7_BASE)
#defineR_PORT8 ((R_PORT0_Type*) R_PORT8_BASE)
#defineR_PORT9 ((R_PORT0_Type*) R_PORT9_BASE)
#defineR_PORT10 ((R_PORT0_Type*) R_PORT10_
,
→BASE)
#defineR_PORT11 ((R_PORT0_Type*) R_PORT11_
,
→BASE)
#defineR_PORT12 ((R_PORT0_Type*) R_PORT12_
,
→BASE)
#defineR_PORT13 ((R_PORT0_Type*) R_PORT13_
,
→BASE)
#defineR_PORT14 ((R_PORT0_Type*) R_PORT14_
,
→BASE)
#defineR_PFS ((R_PFS_Type*) R_PFS_BASE)
#defineR_PMISC ((R_PMISC_Type*) R_PMISC_BASE)

7.4.2.3

hal_entry入口函數(shù)

一般來說,接下來我們應該在main函數(shù)里編寫我們的程序,但是使用FSP庫卻不一樣,在沒有使用RTOS的情況下,它規(guī)定以名為hal_entry的函數(shù)作為用戶應用程序的入口,因此我們應該在hal_entry入口函數(shù)下編寫我們的代碼。

實際上,當使用RTOS時,程序是從main函數(shù)開始進行線程調度;當沒有使用RTOS時,C語言程序的入口函數(shù)main函數(shù)調用了hal_entry函數(shù)。我們新建的工程是沒有選用RTOS的,因此,用戶程序是從hal_entry函數(shù)開始執(zhí)行。我們打開“srchal_entry.c”文件,在hal_entry函數(shù)里面編寫我們的代碼。

以啟明6M5開發(fā)板為例,RA6M5工程的hal_entry函數(shù)代碼如下所示。

注解

啟明4M2開發(fā)板和啟明2L1開發(fā)板的用戶可直接打開配套的“08_Register_LED”例程查看該代碼,限于篇幅,不在本章中貼出。

列表2:代碼清單8-2:hal_entry.c文件

左右滑動查看完整內容

voidhal_entry(void)
{
/*TODO:add your own code here */
/* 取消寫保護 */
R_PMISC->PWPR =0;///< Clear BOWI bit -?
,
→writing to PFSWE bit enabled
R_PMISC->PWPR =1U<< BSP_IO_PWPR_PFSWE_OFFSET;?///< Set PFSWE bit -?
,
→writing to PFSregisterenabled
/* LED1:配置引腳 P400 對應的 PFS 寄存器 */
R_PFS->PORT[BSP_IO_PORT_04_PIN_00>>8].PIN[BSP_IO_PORT_04_PIN_00 &?
,
0xFF].PmnPFS =
IOPORT_CFG_PORT_DIRECTION_OUTPUT | IOPORT_CFG_PORT_OUTPUT_LOW;
/* LED2:配置引腳 P403 對應的 PFS 寄存器 */
R_PFS->PORT[BSP_IO_PORT_04_PIN_03>>8].PIN[BSP_IO_PORT_04_PIN_03 &?
,
0xFF].PmnPFS =
IOPORT_CFG_PORT_DIRECTION_OUTPUT | IOPORT_CFG_PORT_OUTPUT_LOW;
/* LED3:配置引腳 P404 對應的 PFS 寄存器 */
R_PFS->PORT[BSP_IO_PORT_04_PIN_04>>8].PIN[BSP_IO_PORT_04_PIN_04 &?
,
0xFF].PmnPFS =
IOPORT_CFG_PORT_DIRECTION_OUTPUT | IOPORT_CFG_PORT_OUTPUT_LOW;
/** 此時 3 個 LED 燈的引腳默認輸出的是低電平
* 所以 3 個 LED 燈都會默認亮起來
* 我們在 while 循環(huán)里讓 LED1 閃爍:每秒鐘翻轉一次狀態(tài)
*/
while(1)
{
/* 翻轉 LED 燈:LED1 */
//R_PORT4->PODR |= 1<<(BSP_IO_PORT_04_PIN_00 & 0xFF);
//R_BSP_SoftwareDelay(1000, BSP_DELAY_UNITS_MILLISECONDS);
//R_PORT4->PODR &= (uint16_t)~(1 << (BSP_IO_PORT_04_PIN_00 & 0xFF));
//R_BSP_SoftwareDelay(1000, BSP_DELAY_UNITS_MILLISECONDS);
/* 或者也可以這樣用位異或操作來翻轉 LED1 */
R_PORT4->PODR ^=1<<(BSP_IO_PORT_04_PIN_00 &?0xFF);
R_BSP_SoftwareDelay(1000, BSP_DELAY_UNITS_MILLISECONDS);
}
//這后面的代碼無需理會
#ifBSP_TZ_SECURE_BUILD
/* Enter non-secure code */
R_BSP_NonSecureEnter();
#endif
}

7.4.3

下載驗證

編寫好上述代碼,然后將程序編譯并下載到開發(fā)板之后,按下復位按鍵來復位開發(fā)板,可以觀察到開發(fā)板上面除了電源指示燈之外的3個LED燈當中有兩個燈常亮,還有一個燈在緩慢閃爍。

閃爍著的LED燈為LED1,它每秒鐘(1000毫秒)便改變一次亮滅的狀態(tài)。


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

    關注

    244

    文章

    24731

    瀏覽量

    692623
  • mcu
    mcu
    +關注

    關注

    147

    文章

    19160

    瀏覽量

    404716
  • 寄存器
    +關注

    關注

    31

    文章

    5620

    瀏覽量

    130451
  • 瑞薩
    +關注

    關注

    38

    文章

    22520

    瀏覽量

    91297
  • FSP
    FSP
    +關注

    關注

    0

    文章

    48

    瀏覽量

    7788
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    RA系列FSP開發(fā)實戰(zhàn)指南之AGT低功耗定時簡介和結構框圖

    RA MCU有兩種定時外設:GPT(General PWM Timer)定時和AGT(Asynchronous General Pu
    的頭像 發(fā)表于 04-30 16:47 ?3194次閱讀
    <b class='flag-5'>瑞</b><b class='flag-5'>薩</b><b class='flag-5'>RA</b><b class='flag-5'>系列</b><b class='flag-5'>FSP</b><b class='flag-5'>庫</b><b class='flag-5'>開發(fā)</b><b class='flag-5'>實戰(zhàn)</b><b class='flag-5'>指南</b>之AGT低功耗定時<b class='flag-5'>器</b>簡介和結構框圖

    RA2L1入門學習】開箱 + 點亮LED

    寬電壓工作范圍** ,集成了電容觸摸、高精度模擬和多種定時資源。 收到開發(fā)板后,包裝比較簡潔,主要包括: RA2L1 開發(fā)板 二、開發(fā)
    發(fā)表于 04-28 15:24

    RA系列FSP開發(fā)實戰(zhàn)指南之使用GPT進行PWM輸出實驗

    本次實驗需要使用到LED來展示定時的效果,LED燈具體的電路講解請讀者參考本教程:8.4.實驗:使用寄存器點亮
    的頭像 發(fā)表于 04-24 10:45 ?233次閱讀
    <b class='flag-5'>瑞</b><b class='flag-5'>薩</b><b class='flag-5'>RA</b><b class='flag-5'>系列</b><b class='flag-5'>FSP</b><b class='flag-5'>庫</b><b class='flag-5'>開發(fā)</b><b class='flag-5'>實戰(zhàn)</b><b class='flag-5'>指南</b>之使用GPT進行PWM輸出實驗

    RA-Eco-RA4M2開發(fā)板評測】+VS Code 下 RA4M2 開發(fā)環(huán)境搭建與 GPIO 點燈實驗教程

    軟件燒錄芯片程序——RA系列FSP開發(fā)
    發(fā)表于 04-15 15:12

    RA MCU眾測寶典 | 環(huán)境搭建之【RA-Eco-RA4M2】基本模板搭建與LED

    “RAMCU眾測寶典”環(huán)境搭建專題再添硬核實操!這次將解鎖“基本模板搭建與LED”技能,加入簡易調度實現(xiàn)多任務管理,一步步搞定“能直接落地”的
    的頭像 發(fā)表于 03-27 17:30 ?2180次閱讀
    <b class='flag-5'>瑞</b><b class='flag-5'>薩</b><b class='flag-5'>RA</b> MCU眾測寶典 | 環(huán)境搭建之【<b class='flag-5'>RA-Eco-RA</b>4M2】基本模板搭建與<b class='flag-5'>LED</b>

    RA系列FSP開發(fā)實戰(zhàn)指南之I2C讀寫EEPROM實驗

    使用官方提供的FPS進行編程,官方提供的FPS具有方便、快捷、簡潔的特性。
    的頭像 發(fā)表于 01-27 10:02 ?3823次閱讀
    <b class='flag-5'>瑞</b><b class='flag-5'>薩</b><b class='flag-5'>RA</b><b class='flag-5'>系列</b><b class='flag-5'>FSP</b><b class='flag-5'>庫</b><b class='flag-5'>開發(fā)</b><b class='flag-5'>實戰(zhàn)</b><b class='flag-5'>指南</b>之I2C讀寫EEPROM實驗

    RA6E2地奇星開發(fā)板試用】開發(fā)板介紹及環(huán)境搭建

    物聯(lián)網、工業(yè)控制、智能硬件等場景。 核心參數(shù)一覽 項目 規(guī)格 主控芯片 R7FA6E2BB3CNE( RA6E2 系列) 內核 Arm Cortex-M33(帶 TrustZone
    發(fā)表于 12-22 00:40

    FSP6.2:RA8新品支持與功能大升級!

    FSP(FlexibleSoftwarePackage)靈活配置軟件包是電子(Renesas)為RA系列微控制
    的頭像 發(fā)表于 12-17 12:04 ?783次閱讀
    <b class='flag-5'>瑞</b><b class='flag-5'>薩</b><b class='flag-5'>FSP</b>6.2:<b class='flag-5'>RA</b>8新品支持與功能大升級!

    RA6E2地奇星開發(fā)板試用】LED點亮

    寄存器和IO關系吧,官方給了資料在\\\\立創(chuàng)·地奇星RA6E2開發(fā)板\\\\4、官方文檔\\\\RA6E2 Group.pdf,第438頁就是端口位操作
    發(fā)表于 12-16 22:02

    RA6E2地奇星開發(fā)板試用】 環(huán)境配置+串口驅動LED

    RA6E2地奇星開發(fā)板試用】+ 環(huán)境配置+串口驅動LED 1.硬件準備 USB-TTL驅動
    發(fā)表于 12-10 15:35

    RA6E2地奇星開發(fā)板試用】介紹、環(huán)境搭建、工程測試

    RA 系列軟件包即可。 工程測試 由板載 LED 原理圖可知,板載 LED 對應 P402 管腳,且為高電平點亮。 工程創(chuàng)建 打開 e^2
    發(fā)表于 12-07 15:27

    RA4E2開發(fā)板評測】點亮LED

    【資料下載】 開發(fā)板網址在RA生態(tài)網頁可以非常方便的下載到:開發(fā)板和工具 | 設計資源 | RA MCU | RZ MPU |
    發(fā)表于 08-27 20:53

    電子RA系列微控制的可擴展性強的配置軟件包 (FSP)安裝下載與使用指南

    電子RA系列微控制的可擴展性強的配置軟件包 (FSP)安裝下載與使用
    的頭像 發(fā)表于 06-11 17:21 ?2277次閱讀

    RA8系列教程 | RA8 開發(fā)環(huán)境搭建,并點亮一個LED

    今天就給大家講講基于Cortex-M85內核RA8單片機快速上手指南。
    的頭像 發(fā)表于 06-04 17:32 ?2033次閱讀
    <b class='flag-5'>瑞</b><b class='flag-5'>薩</b><b class='flag-5'>RA</b>8<b class='flag-5'>系列</b>教程 | <b class='flag-5'>瑞</b><b class='flag-5'>薩</b> <b class='flag-5'>RA</b>8 <b class='flag-5'>開發(fā)</b>環(huán)境搭建,并<b class='flag-5'>點亮</b>一個<b class='flag-5'>LED</b>

    使用寄存器點亮LED

    學習本章時,配合以上芯片手冊中的“19. I/O Ports”章節(jié)一起閱讀,效果會更佳,特別是涉及到寄存器說明的部分。本章內容涉及到較多寄存器方面的深入內容,對于初學者而言這些內容豐富也較難理解,但非常有必要細讀研究、夯實基礎。
    的頭像 發(fā)表于 05-28 17:37 ?1507次閱讀
    使用<b class='flag-5'>寄存器</b><b class='flag-5'>點亮</b><b class='flag-5'>LED</b><b class='flag-5'>燈</b>
    华安县| 平利县| 蒙山县| 马尔康县| 蒲城县| 博白县| 新泰市| 依安县| 库尔勒市| 旬阳县| 东丽区| 万州区| 和政县| 从江县| 林芝县| 河北区| 松江区| 丹巴县| 故城县| 左贡县| 绥德县| 五台县| 云阳县| 灵璧县| 葫芦岛市| 齐齐哈尔市| 湖南省| 正定县| 兖州市| 阳谷县| 资源县| 甘肃省| 沙洋县| 布拖县| 江山市| 高碑店市| 汕尾市| 长沙市| 定州市| 株洲市| 司法|