91视频免费?看_蜜芽MY188精品TV在线观看_国产免费无遮挡在线观看视频_深夜国产_亚洲精品欧洲精品_欧美黑人粗暴多交

8051內核的應用裸機框架

8051-ELL,是根據新一代增強型8051為內核的MCU,基于keil開發的硬件抽象平臺。ELL庫充分考慮8051的特性,結合硬件條件,提供了大量標準的API函數,供開發者訪問底層硬件細節。ELL的大小支持裁剪,在代碼密度和執行效率上做到了很好的平衡。

ELL是efficient low-layer的縮寫,意思是高效低封裝,結合了HAL庫和LL庫的編程思想,既保證了通用性又降低了flash的過度占用。可謂是一舉兩得,高效、簡潔、好用!

8051-ELL庫支持Keil4和Keil5,支持Vscode協同開發,推薦使用EIDE插件。目前ELL庫主要適配了STC公司的單片機型號,以STC8系列為主。后續計劃增加STC12、STC15、STC16系列。

函數庫遵循 Apache 許可證 2.0 版本,可免費在商業產品中使用,不需要公布應用程序源碼,沒有潛在商業風險。

新手如何入門

進入 8051-ELL文檔中心 可查看 入門教程 。

ELL采用了一個裸機框架來組織庫文件。框架包括兩大部分:工程文件和庫文件。

工程文件主要存放Keil工程、Vscode文件、用戶代碼。這里可以根據你的編程習慣進行安排,非常的自由!庫文件才是我們的重頭戲,它主要分為四個部分:核心文件夾、片內外設庫、組件庫、設備驅動庫。其中組件庫和設備驅動庫單獨發展,不放在本倉庫內。

ELL倉庫目錄結構

一級目錄二級目錄描述doc...一些文檔資料examples---示例代碼STC8AxSTC8A系列的示例代碼STC8CxSTC8C系列的示例代碼...其他型號libraries---ELL庫文件core寄存器和啟動文件peripherals芯片的片內外設庫project---模板工程STC8AxSTC8A系列的模板工程STC8CxSTC8C系列的模板工程...其他型號

下面是ELL庫的框架圖:

整個固件庫,充分利用了keil的一些特性,比如使用LX51擴展鏈接器/定位器,優化了BL51的功能,可以生成更小的目標文件等。

源代碼閱讀指導

一、基本架構

設計框架上,ELL分為三個組成部分,分別是片內外設庫、組件庫、設備驅動庫。片內外外設庫是核心庫,包含MCU的片內外設驅動,是ELL的核心組成;組件庫和設備驅動庫,開放給開發者,可以編寫自己的驅動和移植軟件包。

文件細節上,ELL有lib文件夾和project文件夾組成。

lib文件夾包含startup文件夾、core文件夾、peripherals文件夾。startup文件夾存放啟動代碼,是匯編語言;core文件夾存放MCU的寄存器文件和ELL核心數據類型文件,同時它還負責管理MCU的中斷(比如定義中斷號);其他文件夾和設計框架一一對應。

project文件夾,存放Keil-C51工程,后續會支持IAR和SDCC。具體包含main文件夾、application文件夾、build文件夾。main文件夾存放系統的初始化文件和中斷服務函數文件;application文件夾存放開發者自己的代碼;build文件夾存放編譯的燒錄文件和匯編文件。

二、數據結構

ELL采用了面向對象的封裝思想,但是考慮51的資源和性能,又做了一些調整和取舍。對于同類外設,且工作模式的外設,采用結構體+枚舉體的方式封裝;對于單個外設,且比較抽象的,采用函數傳參完成封裝,但是傳參的參數,仍然采用枚舉體或者格式統一的宏來封裝。

結構體+枚舉體的封裝里,枚舉體作為結構體成員,主要是負責某一個功能或參數的設置,而包含這些枚舉體成員的結構體,往往代表一個外設的全部信息。

除此之外,ELL靈活運用了宏的特性,具體有宏函數、控制宏、宏傳參。宏函數是對寄存器操作進行封裝,以保證執行效率的同時,提高可讀性;控制宏用來裁剪ELL的功能和做一些配置工作。

支持的型號及外設

√代表已經支持、空代表MCU沒有這個外設、 X代表還沒有適配

STC8系列

部分型號可能有所差異,詳情可查看官方數據手冊。

聯合開發

一、代碼編寫準則

1.宏命名:全部采用字母大寫;

宏函數:
#define NVIC_COMP_CTRL(run)    do{CMPCR1 = (CMPCR1 & 0xCF)|(run << 4);}while(0)
普通宏:
#define PER_LIB_COMP_CTRL 1

2.變量命名:采用動賓結構,單詞過長要縮寫(保留三個字母),單詞之間用_連接;

全局變量說明:要加前綴'G_'; 局部變量說明:首字母小寫;

全局變量:
uint8_t G_Uart_Busy_Flg = 0; //Busy flag of receive
局部變量:
uint32_t sysClk_FRE;

3.函數命名:名字+動作形式,單詞首字母大寫,單詞之間用_連接; 函數傳參說明:首字母小寫;

FSCSTATE MPWMn_Port_Init(MPWMPort_Type port, MPWMCLKSrc_Type clkSrc, uint16_t period)
{
    ...
}

4.代碼注釋規范:采用Doxygen規范,具體細節可參考庫源代碼。

/**
 * @brief     PWM端口初始化函數。Init PWM port function.
 * @details   初始化指定端口(0-5)。Init the specified PWM port. (from 0 to 5)
 * @param[in] port PWM端口枚舉體。PWM port enumerator.
 * @param[in] clkSrc PWM時鐘源。PWM clock source.
 * @param[in] period PWM周期值(計數器重裝載值)。PWM period value (counter reload value)
 * @return    FSC_SUCCESS 返回成功。Return to success.
 * @return    FSC_FAIL    返回失敗。Return to fail.
**/

二、模塊開發指導

ELL使用git管理源代碼,使用gitee作為主倉庫,github作為備份倉庫。如果想要成為ELL的開發者,請以gitee倉庫為主。

一、Fork本倉庫

首先fork本倉庫當你的賬戶下,然后在此基礎上做開發。

二、開發代碼

1.寄存器

為了保持統一的風格,以及最大程度的靈活性,ELL的開發會細致到寄存器的開發。但是寄存器頭文件仍然是沿用官方給出的命名規則,以保證兼容性,但是寄存器的編寫和安排,以模塊化放置。寄存器頭文件存放的位置在libraries/core/register/xxx型號。

2.數據結構

可以參考上文的源代碼閱讀指導,核心內容就是結構體+枚舉體+宏的形式,特點是對宏的封裝。

3.API函數

可以參考任意一個模塊來設計。

三、提交PR和Issue

再完成代碼開發以后,你可以發布PR請求合并,同時在Issue里面做詳細解釋。管理員再審核過你的代碼后,會將你的PR合并到主倉庫。

代碼非常整潔,源代碼在配套資料可以下載

聲明:本內容為作者獨立觀點,不代表電子星球立場。未經允許不得轉載。授權事宜與稿件投訴,請聯系:editor@netbroad.com
本篇所含全部資料,點擊此處留下郵箱我會發給你
資料明細:code-master.zip
覺得內容不錯的朋友,別忘了一鍵三連哦!
贊 6
收藏 4
關注 211
成為作者 賺取收益
全部留言
0/200
  • vikey_zhu 2021-10-12 09:02
    老師,能不能發我一下資料,謝謝! vi****@****.com
    回復 1條回復
  • zhoucwyh 2021-10-11 21:51
    老師,能不能發我一下資料,謝謝! zh****@****.com
    回復 1條回復
  • lihui710884923 2021-10-11 11:56
    51可以用庫函數來編程
    回復
主站蜘蛛池模板: 通州市| 南昌市| 嫩江县| 武胜县| 呈贡县| 湖州市| 茌平县| 靖宇县| 扶风县| 岱山县| 襄樊市| 会宁县| 龙井市| 望江县| 读书| 临清市| 碌曲县| 上杭县| 门源| 台前县| 白河县| 寻乌县| 个旧市| 沭阳县| 清新县| 会宁县| 江口县| 吉林省| 仪征市| 营山县| 开封市| 沈丘县| 平潭县| 来宾市| 盐亭县| 徐州市| 潢川县| 工布江达县| 贺兰县| 宝鸡市| 大理市|