精品国产一区在线_av无码中文字幕无码王_天海翼三点刺激高潮不停_好硬好大好爽视频_欧美高清一区三区在线专区_香蕉黄色片

8051內(nèi)核的應(yīng)用裸機(jī)框架

8051-ELL,是根據(jù)新一代增強(qiáng)型8051為內(nèi)核的MCU,基于keil開(kāi)發(fā)的硬件抽象平臺(tái)。ELL庫(kù)充分考慮8051的特性,結(jié)合硬件條件,提供了大量標(biāo)準(zhǔn)的API函數(shù),供開(kāi)發(fā)者訪(fǎng)問(wèn)底層硬件細(xì)節(jié)。ELL的大小支持裁剪,在代碼密度和執(zhí)行效率上做到了很好的平衡。

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

8051-ELL庫(kù)支持Keil4和Keil5,支持Vscode協(xié)同開(kāi)發(fā),推薦使用EIDE插件。目前ELL庫(kù)主要適配了STC公司的單片機(jī)型號(hào),以STC8系列為主。后續(xù)計(jì)劃增加STC12、STC15、STC16系列。

函數(shù)庫(kù)遵循 Apache 許可證 2.0 版本,可免費(fèi)在商業(yè)產(chǎn)品中使用,不需要公布應(yīng)用程序源碼,沒(méi)有潛在商業(yè)風(fēng)險(xiǎn)。

新手如何入門(mén)

進(jìn)入 8051-ELL文檔中心 可查看 入門(mén)教程 。

ELL采用了一個(gè)裸機(jī)框架來(lái)組織庫(kù)文件。框架包括兩大部分:工程文件和庫(kù)文件。

工程文件主要存放Keil工程、Vscode文件、用戶(hù)代碼。這里可以根據(jù)你的編程習(xí)慣進(jìn)行安排,非常的自由!庫(kù)文件才是我們的重頭戲,它主要分為四個(gè)部分:核心文件夾、片內(nèi)外設(shè)庫(kù)、組件庫(kù)、設(shè)備驅(qū)動(dòng)庫(kù)。其中組件庫(kù)和設(shè)備驅(qū)動(dòng)庫(kù)單獨(dú)發(fā)展,不放在本倉(cāng)庫(kù)內(nèi)。

ELL倉(cāng)庫(kù)目錄結(jié)構(gòu)

一級(jí)目錄二級(jí)目錄描述doc...一些文檔資料examples---示例代碼STC8AxSTC8A系列的示例代碼STC8CxSTC8C系列的示例代碼...其他型號(hào)libraries---ELL庫(kù)文件core寄存器和啟動(dòng)文件peripherals芯片的片內(nèi)外設(shè)庫(kù)project---模板工程STC8AxSTC8A系列的模板工程STC8CxSTC8C系列的模板工程...其他型號(hào)

下面是ELL庫(kù)的框架圖:

整個(gè)固件庫(kù),充分利用了keil的一些特性,比如使用LX51擴(kuò)展鏈接器/定位器,優(yōu)化了BL51的功能,可以生成更小的目標(biāo)文件等。

源代碼閱讀指導(dǎo)

一、基本架構(gòu)

設(shè)計(jì)框架上,ELL分為三個(gè)組成部分,分別是片內(nèi)外設(shè)庫(kù)、組件庫(kù)、設(shè)備驅(qū)動(dòng)庫(kù)。片內(nèi)外外設(shè)庫(kù)是核心庫(kù),包含MCU的片內(nèi)外設(shè)驅(qū)動(dòng),是ELL的核心組成;組件庫(kù)和設(shè)備驅(qū)動(dòng)庫(kù),開(kāi)放給開(kāi)發(fā)者,可以編寫(xiě)自己的驅(qū)動(dòng)和移植軟件包。

文件細(xì)節(jié)上,ELL有l(wèi)ib文件夾和project文件夾組成。

lib文件夾包含startup文件夾、core文件夾、peripherals文件夾。startup文件夾存放啟動(dòng)代碼,是匯編語(yǔ)言;core文件夾存放MCU的寄存器文件和ELL核心數(shù)據(jù)類(lèi)型文件,同時(shí)它還負(fù)責(zé)管理MCU的中斷(比如定義中斷號(hào));其他文件夾和設(shè)計(jì)框架一一對(duì)應(yīng)。

project文件夾,存放Keil-C51工程,后續(xù)會(huì)支持IAR和SDCC。具體包含main文件夾、application文件夾、build文件夾。main文件夾存放系統(tǒng)的初始化文件和中斷服務(wù)函數(shù)文件;application文件夾存放開(kāi)發(fā)者自己的代碼;build文件夾存放編譯的燒錄文件和匯編文件。

二、數(shù)據(jù)結(jié)構(gòu)

ELL采用了面向?qū)ο蟮姆庋b思想,但是考慮51的資源和性能,又做了一些調(diào)整和取舍。對(duì)于同類(lèi)外設(shè),且工作模式的外設(shè),采用結(jié)構(gòu)體+枚舉體的方式封裝;對(duì)于單個(gè)外設(shè),且比較抽象的,采用函數(shù)傳參完成封裝,但是傳參的參數(shù),仍然采用枚舉體或者格式統(tǒng)一的宏來(lái)封裝。

結(jié)構(gòu)體+枚舉體的封裝里,枚舉體作為結(jié)構(gòu)體成員,主要是負(fù)責(zé)某一個(gè)功能或參數(shù)的設(shè)置,而包含這些枚舉體成員的結(jié)構(gòu)體,往往代表一個(gè)外設(shè)的全部信息。

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

支持的型號(hào)及外設(shè)

√代表已經(jīng)支持、空代表MCU沒(méi)有這個(gè)外設(shè)、 X代表還沒(méi)有適配

STC8系列

部分型號(hào)可能有所差異,詳情可查看官方數(shù)據(jù)手冊(cè)。

聯(lián)合開(kāi)發(fā)

一、代碼編寫(xiě)準(zhǔn)則

1.宏命名:全部采用字母大寫(xiě);

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

2.變量命名:采用動(dòng)賓結(jié)構(gòu),單詞過(guò)長(zhǎng)要縮寫(xiě)(保留三個(gè)字母),單詞之間用_連接;

全局變量說(shuō)明:要加前綴'G_'; 局部變量說(shuō)明:首字母小寫(xiě);

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

3.函數(shù)命名:名字+動(dòng)作形式,單詞首字母大寫(xiě),單詞之間用_連接; 函數(shù)傳參說(shuō)明:首字母小寫(xiě);

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

4.代碼注釋規(guī)范:采用Doxygen規(guī)范,具體細(xì)節(jié)可參考庫(kù)源代碼。

/**
 * @brief     PWM端口初始化函數(shù)。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時(shí)鐘源。PWM clock source.
 * @param[in] period PWM周期值(計(jì)數(shù)器重裝載值)。PWM period value (counter reload value)
 * @return    FSC_SUCCESS 返回成功。Return to success.
 * @return    FSC_FAIL    返回失敗。Return to fail.
**/

二、模塊開(kāi)發(fā)指導(dǎo)

ELL使用git管理源代碼,使用gitee作為主倉(cāng)庫(kù),github作為備份倉(cāng)庫(kù)。如果想要成為ELL的開(kāi)發(fā)者,請(qǐng)以gitee倉(cāng)庫(kù)為主。

一、Fork本倉(cāng)庫(kù)

首先f(wàn)ork本倉(cāng)庫(kù)當(dāng)你的賬戶(hù)下,然后在此基礎(chǔ)上做開(kāi)發(fā)。

二、開(kāi)發(fā)代碼

1.寄存器

為了保持統(tǒng)一的風(fēng)格,以及最大程度的靈活性,ELL的開(kāi)發(fā)會(huì)細(xì)致到寄存器的開(kāi)發(fā)。但是寄存器頭文件仍然是沿用官方給出的命名規(guī)則,以保證兼容性,但是寄存器的編寫(xiě)和安排,以模塊化放置。寄存器頭文件存放的位置在libraries/core/register/xxx型號(hào)。

2.數(shù)據(jù)結(jié)構(gòu)

可以參考上文的源代碼閱讀指導(dǎo),核心內(nèi)容就是結(jié)構(gòu)體+枚舉體+宏的形式,特點(diǎn)是對(duì)宏的封裝。

3.API函數(shù)

可以參考任意一個(gè)模塊來(lái)設(shè)計(jì)。

三、提交PR和Issue

再完成代碼開(kāi)發(fā)以后,你可以發(fā)布PR請(qǐng)求合并,同時(shí)在Issue里面做詳細(xì)解釋。管理員再審核過(guò)你的代碼后,會(huì)將你的PR合并到主倉(cāng)庫(kù)。

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

聲明:本內(nèi)容為作者獨(dú)立觀(guān)點(diǎn),不代表電子星球立場(chǎng)。未經(jīng)允許不得轉(zhuǎn)載。授權(quán)事宜與稿件投訴,請(qǐng)聯(lián)系:editor@netbroad.com
本篇所含全部資料,點(diǎn)擊此處留下郵箱我會(huì)發(fā)給你
資料明細(xì):code-master.zip
覺(jué)得內(nèi)容不錯(cuò)的朋友,別忘了一鍵三連哦!
贊 6
收藏 4
關(guān)注 211
成為作者 賺取收益
全部留言
0/200
  • vikey_zhu 2021-10-12 09:02
    老師,能不能發(fā)我一下資料,謝謝! vi****@****.com
    回復(fù) 1條回復(fù)
  • zhoucwyh 2021-10-11 21:51
    老師,能不能發(fā)我一下資料,謝謝! zh****@****.com
    回復(fù) 1條回復(fù)
  • lihui710884923 2021-10-11 11:56
    51可以用庫(kù)函數(shù)來(lái)編程
    回復(fù)
主站蜘蛛池模板: 大地资源网在线观看免费高清 | 亚洲高清国产视频 | 波多中文字幕 | 潜行者40集连续剧免费观看 | 特级a视频 | 青青伊人影院 | 91久久精品国产一区二区三区 | 亚洲国产精品成人综合色在线婷婷 | 精品久久久久久免费人妻 | 精品亚洲永久免费精品 | 婷婷综合久久狠狠色99H | 蜜桃97夜夜做 | aaa欧美| 蜜桃精品久久久久久久免费影院 | 在线观看免费黄色小视频 | 伊人75在线 | 99资源在线 | 国产精品资源一区二区三区 | 99在线国产视频 | 欧美三级短视频 | 久久亚洲国产精品无码一区 | 91亚?成人 | 插插插小说 | bnb988免费影院 | 伊人欧美一区 | 人妻系列无码专区久久五月天 | 人妻用嘴含精大口吞精 | 在线看免费的a | 99视频九九精品视频在线观看 | 国产内射性高潮对白 | 打开双腿放在椅子上调教 | 日韩精品一区二区三区外面 | 色妞www精品视频免费观看 | 亚洲Aⅴ无码专区在线观看春色 | 扒开腿灌牛奶调教动漫 | 99精品欧美一区二区三区视频 | 国产精品久久毛片A片软件爽爽 | 大地资源中文在线观看官网免费 | 毛片无限看 | 538PROM精品视频在线搬运工 | 91呦呦 |