女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

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

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

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

自己寫庫:構(gòu)建庫函數(shù)雛形

瑞薩MCU小百科 ? 來源:野火電子 ? 2025-06-19 11:19 ? 次閱讀

第8章自己寫庫——構(gòu)建庫函數(shù)雛形

實(shí)際上,構(gòu)建固件庫是一件費(fèi)時(shí)費(fèi)力的事情,并且它對(duì)開發(fā)者對(duì)芯片的熟悉程度有一定的要求。甚至,當(dāng)一個(gè)固件庫的封裝程度很高時(shí),想要閱讀并理解該固件庫的底層代碼也會(huì)變成一件有較高難度的事情。瑞薩RA系列單片機(jī)所使用的官方FSP庫便是這樣的一種封裝程度很高的固件庫。所幸的是,F(xiàn)SP庫的意義在于為開發(fā)者封裝硬件底層,因此一般而言,F(xiàn)SP庫是帶來方便的,開發(fā)者只需學(xué)會(huì)如何使用FSP庫即可,而不用深入到FSP庫的底層細(xì)節(jié)。

構(gòu)建固件庫一般是由芯片廠商來做,比如FSP庫就是由瑞薩官方構(gòu)建和維護(hù)的。為了讓讀者更加清晰地了解到固件庫的作用,我們接下來將會(huì)說明一種構(gòu)建一個(gè)封裝程度較低的固件庫的思路。值得注意的是,本章所構(gòu)建的庫函數(shù)雛形與實(shí)際上的FSP庫有很大區(qū)別,但求這對(duì)讀者理解和使用FSP庫有所幫助。

8.1硬件設(shè)計(jì)

野火啟明6M5開發(fā)板的LED電路圖如圖所示。

030a01f8-4a67-11f0-b715-92fbcf53809c.png

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

0312f3f8-4a67-11f0-b715-92fbcf53809c.png

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

0321e066-4a67-11f0-b715-92fbcf53809c.png

8.2軟件設(shè)計(jì)

8.2.1新建工程

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

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

工程新建好之后,在工程根目錄的“src”文件夾下面新建“ioport”文件夾,再進(jìn)入“ioport”文件夾里面新建ioport驅(qū)動(dòng)的源文件和頭文件:“ra_ioport.c”和“ra_ioport.h”。工程文件結(jié)構(gòu)如下。

列表1:文件結(jié)構(gòu)

左右滑動(dòng)查看完整內(nèi)容

09_Register_MyLib
├─ ......
└─src
 ├─ ioport
 │ ├─ ra_ioport.c
 │ └─ ra_ioport.h
 └─ hal_entry.c

警告

注意:對(duì)于使用Keil開發(fā)環(huán)境的用戶,將代碼文件放到“src”文件夾下之后,Keil軟件并不會(huì)自動(dòng)將它們加入到工程,這時(shí)候需要打開RASC FSP配置界面,點(diǎn)擊一次單擊右上角的“Generate Project Content”按鈕,從而“src”文件夾下的代碼文件就會(huì)被自動(dòng)加入進(jìn)工程中。接著關(guān)閉FSP配置界面返回到Keil,然后進(jìn)行一次編譯后會(huì)彈出一個(gè)提示框提示工程結(jié)構(gòu)發(fā)生了變化,點(diǎn)擊確定即可。對(duì)于使用e2studio的用戶則不需要如此。

8.2.2包含寄存器定義的頭文件

在ra_ioport.h中通過包含“hal_data.h”頭文件來間接包含寄存器定義頭文件:R7FA6M5BH.hR7FA4M2AD.hR7FA2L1AB.h。

列表2:代碼清單8-1:ra_ioport.h

左右滑動(dòng)查看完整內(nèi)容

#include"hal_data.h"http://間接包含了頭文件 "R7FA6M5BH.h" / "R7FA4M2AD.h" /
→"R7FA2L1AB.h"

8.2.3端口和引腳號(hào)的枚舉類型定義

我們需要定義端口和引腳號(hào)的枚舉類型,用來表示某個(gè)要操控的某個(gè)引腳。但是如果像:“BSP_IO_PORT_04_PIN_00”、“BSP_IO_PORT_04_PIN_03”和“BSP_IO_PORT_04_PIN_04”

這樣定義端口和引腳號(hào)的枚舉類型,會(huì)造成與FSP庫中的枚舉定義沖突,因此我們暫時(shí)把端口和引腳號(hào)分開出來單獨(dú)定義。

列表3:代碼清單8-2:ra_ioport.h文件

左右滑動(dòng)查看完整內(nèi)容

/* IOPORT 端口定義 */
typedefenumio_port
{
IO_PORT_00 = 0x0000, ///< IO port?0
IO_PORT_01 =?0x0100,?///< IO port 1
IO_PORT_02 = 0x0200, ///< IO port?2
IO_PORT_03 =?0x0300,?///< IO port 3
IO_PORT_04 = 0x0400, ///< IO port?4
IO_PORT_05 =?0x0500,?///< IO port 5
IO_PORT_06 = 0x0600, ///< IO port?6
IO_PORT_07 =?0x0700,?///< IO port 7
IO_PORT_08 = 0x0800, ///< IO port?8
IO_PORT_09 =?0x0900,?///< IO port 9
IO_PORT_10 = 0x0A00, ///< IO port?10
IO_PORT_11 =?0x0B00,?///< IO port 11
IO_PORT_12 = 0x0C00, ///< IO port?12
IO_PORT_13 =?0x0D00,?///< IO port 13
IO_PORT_14 = 0x0E00, ///< IO port?14
} IO_Port_t;


/* IOPORT 引腳定義 */
typedefenumio_pin
{
IO_PIN_00?=?0x0000,?///< IO port 0 pin 0
IO_PIN_01 = 0x0001, ///< IO port?0?pin?1
IO_PIN_02 =?0x0002,?///< IO port 0 pin 2
IO_PIN_03 = 0x0003, ///< IO port?0?pin?3
IO_PIN_04 =?0x0004,?///< IO port 0 pin 4
IO_PIN_05 = 0x0005, ///< IO port?0?pin?5
IO_PIN_06 =?0x0006,?///< IO port 0 pin 6
IO_PIN_07 = 0x0007, ///< IO port?0?pin?7
IO_PIN_08 =?0x0008,?///< IO port 0 pin 8
IO_PIN_09 = 0x0009, ///< IO port?0?pin?9
IO_PIN_10?=?0x000A,?///< IO port 0 pin 10
IO_PIN_11 = 0x000B, ///< IO port?0?pin?11
IO_PIN_12 =?0x000C,?///< IO port 0 pin 12
IO_PIN_13 = 0x000D, ///< IO port?0?pin?13
IO_PIN_14 =?0x000E,?///< IO port 0 pin 14
IO_PIN_15 = 0x000F, ///< IO port?0?pin?15
} IO_Pin_t;

8.2.4IOPORT相關(guān)功能的枚舉類型定義

接著定義IOPORT相關(guān)功能的枚舉類型,這里的每一個(gè)枚舉類型都對(duì)應(yīng)著IOPORT的其中一項(xiàng)功能配置。

列表4:代碼清單8-3:ra_ioport.h文件

左右滑動(dòng)查看完整內(nèi)容

/* IO 引腳模式 */
typedefenum
{
IO_MODE_GPIO=0,/* 普通 GPIO 功能 */
IO_MODE_AF=1,/* 復(fù)用功能 */
IO_MODE_AN=2/* 模擬輸入輸出功能 */
} IO_Mode_t;
/* IO 引腳方向 */
typedefenum
{
IO_DIR_INPUT=0,// 引腳用作 GPIO 輸入功能
IO_DIR_OUTPUT=1// 引腳用作 GPIO 輸出功能
} IO_Dir_t;
/* IO 引腳輸出類型 */
typedefenum
{
IO_OTYPE_PP=0x00,/* 推挽模式 */
IO_OTYPE_OD=0x01/* 開漏模式 */
} IO_OType_t;
/* IO 引腳輸出能力 */
typedefenum
{
IO_DRIVE_LOW=0,// Low drive
IO_DRIVE_MIDDLE=1,// Middle drive
IO_DRIVE_HSHD=2,// High-speed high-drive
IO_DRIVE_HIGH=3// High drive
} IO_DriveCapability_t;
/* IO 引腳輸出電平 */
typedefenumio_level
{
IO_LEVEL_LOW=0,// Low
IO_LEVEL_HIGH// High
} IO_Level_t;
/* IO 引腳輸入上下拉 */
typedefenum
{
IO_NO_PULL= 0x00u,/* 浮空輸入 */
IO_PULL_UP= 0x01u,/* 上拉輸入 */
//IO_PULL_DOWN = 0x02u /* RA6M5/RA4M2/RA2L1 引腳沒有下拉功能 */
} IO_Pull_t;

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

    關(guān)注

    36

    文章

    22375

    瀏覽量

    87832
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4374

    瀏覽量

    64379
  • 開發(fā)板
    +關(guān)注

    關(guān)注

    25

    文章

    5583

    瀏覽量

    103041

原文標(biāo)題:自己寫庫:構(gòu)建庫函數(shù)雛形——瑞薩RA系列FSP庫開發(fā)實(shí)戰(zhàn)指南(20)

文章出處:【微信號(hào):瑞薩MCU小百科,微信公眾號(hào):瑞薩MCU小百科】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    用TIM的PWM輸出模式一個(gè)步進(jìn)電機(jī)的Stepper庫函數(shù)

    這是之前平衡小車時(shí)自己用TIM的PWM輸出模式寫了一個(gè)步進(jìn)電機(jī)的Stepper庫函數(shù)。
    的頭像 發(fā)表于 07-24 14:36 ?2855次閱讀
    用TIM的PWM輸出模式<b class='flag-5'>寫</b>一個(gè)步進(jìn)電機(jī)的Stepper<b class='flag-5'>庫函數(shù)</b>

    什么是STM32函數(shù)庫

    文章目錄- 自己構(gòu)建庫函數(shù)雛形1. 什么是 STM32
    發(fā)表于 08-05 07:30

    單片機(jī)庫函數(shù)有哪些

    高中生自己的STC8A8K64S4A12(8051)單片機(jī)庫函數(shù)分享庫函數(shù)相關(guān)開源協(xié)議現(xiàn)在擁有哪些?開源地址
    發(fā)表于 11-26 08:19

    【野火啟明6M5開發(fā)板體驗(yàn)】開箱+認(rèn)識(shí)開發(fā)板+資料

    寄存器5. 使用e2 studio新建工程6. 使用RASC生成Keil工程7. e2 studio/Keil/RASC使用說明8. 第一個(gè)實(shí)驗(yàn):用寄存器點(diǎn)亮LED燈9. 自己——構(gòu)建
    發(fā)表于 12-20 23:28

    PICC庫函數(shù)詳解

    PICC庫函數(shù)詳解
    發(fā)表于 04-18 20:13 ?132次下載

    STC庫函數(shù)使用參考

    STC庫函數(shù)使用參考STC庫函數(shù)使用參考
    發(fā)表于 07-06 15:14 ?0次下載

    CAN庫函數(shù)程序

    CAN庫函數(shù)程序
    發(fā)表于 02-27 16:06 ?26次下載

    高中生自己的STC8A8K64S4A12(8051)單片機(jī)庫函數(shù)分享

    高中生自己的STC8A8K64S4A12(8051)單片機(jī)庫函數(shù)分享庫函數(shù)相關(guān)開源協(xié)議現(xiàn)在擁有哪些?開源地址
    發(fā)表于 11-18 12:21 ?20次下載
    高中生<b class='flag-5'>自己</b><b class='flag-5'>寫</b>的STC8A8K64S4A12(8051)單片機(jī)<b class='flag-5'>庫函數(shù)</b>分享

    從自定義的庫函數(shù)到STM32官方標(biāo)準(zhǔn)

    ??在上一節(jié)的基礎(chǔ)上,進(jìn)一步改寫代碼,再引入官方標(biāo)注庫函數(shù)。雖然官方標(biāo)準(zhǔn)慢慢式微,有一些別的可能會(huì)取代它,但是并不妨礙我們繼續(xù)拿官方來寫代碼,吸取里邊好的寫法,強(qiáng)化下C語言技能,
    發(fā)表于 12-02 20:06 ?1次下載
    從自定義的<b class='flag-5'>庫函數(shù)</b>到STM32官方標(biāo)準(zhǔn)<b class='flag-5'>庫</b>

    IAR中將部分文件編譯成庫函數(shù).a及如何調(diào)用庫函數(shù)

    目的:將庫函數(shù)提供給第三方,但有不想讓別人得到源代碼。目的:將庫函數(shù)提供給第三方,但有不想讓別人得到源代碼。一、如何將文件編譯成靜態(tài)連接.a二、如何在項(xiàng)目中引入靜態(tài)連接...
    發(fā)表于 12-03 11:36 ?18次下載
    IAR中將部分文件編譯成<b class='flag-5'>庫函數(shù)</b>.a及如何調(diào)用<b class='flag-5'>庫函數(shù)</b>

    【STM32】標(biāo)準(zhǔn)與HAL對(duì)照學(xué)習(xí)教程三--使用庫函數(shù)配置GPIO點(diǎn)亮LED燈

    介紹3、使用庫函數(shù)編寫程序使LED燈閃爍操作4、實(shí)驗(yàn)效果五、使用cubemx生成HAL工程點(diǎn)亮LED燈1、cubemx配置生成工程2、HAL控制函數(shù)介紹3、編寫使LED燈閃爍的程序
    發(fā)表于 12-05 14:06 ?17次下載
    【STM32】標(biāo)準(zhǔn)<b class='flag-5'>庫</b>與HAL<b class='flag-5'>庫</b>對(duì)照學(xué)習(xí)教程三--使用<b class='flag-5'>庫函數(shù)</b>配置GPIO點(diǎn)亮LED燈

    stm32下標(biāo)準(zhǔn)庫函數(shù)與HAL庫函數(shù)編程方式的差異

    stm32下標(biāo)準(zhǔn)庫函數(shù)與HAL庫函數(shù)編程方式的差異標(biāo)準(zhǔn)庫函數(shù)HAL庫函數(shù)標(biāo)準(zhǔn)庫函數(shù)與HAL庫函數(shù)
    發(fā)表于 12-09 14:21 ?15次下載
    stm32下標(biāo)準(zhǔn)<b class='flag-5'>庫函數(shù)</b>與HAL<b class='flag-5'>庫函數(shù)</b>編程方式的差異

    關(guān)于STM32庫函數(shù)手動(dòng)添加時(shí)鐘問題。

    自己添加庫函數(shù)以及啟動(dòng)文件,全部使用keil自帶的manage run-time environment功能,后來發(fā)現(xiàn)一個(gè)問題自帶中指引的庫函數(shù)為安裝目錄下的文件,多個(gè)程序公用一堆
    發(fā)表于 12-27 18:46 ?1次下載
    關(guān)于STM32<b class='flag-5'>庫函數(shù)</b>手動(dòng)添加時(shí)鐘問題。

    基于標(biāo)準(zhǔn)庫函數(shù)與基于HAL庫函數(shù)的stm32編程方式對(duì)比

    一、基于標(biāo)準(zhǔn)庫函數(shù)的stm32編程方式二、基于HAL庫函數(shù)的stm32編程方式差異上面也提到了,STM32有非常多的寄存器,而導(dǎo)致了開發(fā)困難,所以為此ST公司就為每款芯片都編寫了一份文件,也就是工程
    發(fā)表于 12-28 19:09 ?30次下載
    基于標(biāo)準(zhǔn)<b class='flag-5'>庫函數(shù)</b>與基于HAL<b class='flag-5'>庫函數(shù)</b>的stm32編程方式對(duì)比

    stc庫函數(shù)使用參考

    stc庫函數(shù)使用參考,本函數(shù)庫適用于STC/IAP15F/L2K61S2系列MCU,具體的MCU的資源,請(qǐng)參考用戶手冊(cè)中對(duì)應(yīng)的章節(jié)。
    發(fā)表于 10-17 14:33 ?15次下載