日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當前位置:首頁 > 嵌入式 > 嵌入式微處理器
[導讀]不知道大家有沒有聽過軟件設計中的低耦合,高內(nèi)聚的兩個原則。?具體是什么意思呢??在一個項目中:每個模塊之間相聯(lián)系越緊密,則耦合性越高;這樣你改動其中一個模塊,其他模塊也需要一起改動,換言之:牽一發(fā)而動全身。一個模塊內(nèi)部各個元素之間的聯(lián)系的緊密程度,如果各個元素(語句、程序段)之間...

不知道大家有沒有聽過軟件設計中的耦合,高內(nèi)聚的兩個原則。?

具體是什么意思呢??

在一個項目中:每個模塊之間相聯(lián)系越緊密,則耦合性越高;這樣你改動其中一個模塊,其他模塊也需要一起改動,換言之:牽一發(fā)而動全身。

一個模塊內(nèi)部各個元素之間的聯(lián)系的緊密程度,如果各個元素(語句、程序段)之間的聯(lián)系程度越高,則內(nèi)聚性越高,也就是高內(nèi)聚

如果一個程序的邏輯處理部分,分散到好幾個文件中,那么每次改動,就會改動好幾個文件,這就是高耦合。

高耦合,低內(nèi)聚



低耦合,高內(nèi)聚

現(xiàn)在的軟件結(jié)構(gòu)設計,都會要求“低耦合,高內(nèi)聚”,來保證軟件的高質(zhì)量,提高軟件的可維護性。

下面是一個低耦合高內(nèi)聚的一種無OS的MCU實用軟件框架。

包括任務輪詢管理,命令管理器、低功耗管理、環(huán)形緩沖區(qū)等實用模塊。系統(tǒng)中廣泛利用自定義段技術(shù)減少各個模塊間的耦合關(guān)系,大大提供程序的可維護性。

主要功能

  • 支持模塊自動化管理,并提供不同優(yōu)先等級初始化聲明接口。
  • 支持任務輪詢管理,通過簡單的宏聲明即可實現(xiàn),不需要復雜的聲明調(diào)用。
  • 支持低功耗管理,休眠與喚醒通知。
  • 支持命令行解析,命令注冊與執(zhí)行。
  • blink設備支持,統(tǒng)一管理LED、震動馬達、蜂鳴器

使用說明

完整的代碼可以參考工程文件,系統(tǒng)開發(fā)平臺如下:
MCU:STM32F401RET6
IDE:IAR 7.4或者Keil MDK 4.72A

任務初始化及任務輪詢管理

使用此模塊前需要系統(tǒng)提供滴答定時器,用于驅(qū)動任務輪詢作業(yè)。(參考platform.c)

//定時器中斷(提供系統(tǒng)滴答)
void?SysTick_Handler(void)
{
????systick_increase(SYS_TICK_INTERVAL);?//增加系統(tǒng)節(jié)拍
}
注冊初始化入口及任務(參考自key_task.c)

static?void?key_init(void)
{
????/*do?something*/
}

static?void?key_scan(void)
{
????/*do?something*/
}

module_init("key",?key_init);??????????????//注冊按鍵初始化接口
driver_register("key",?key_scan,?20);??????//注冊按鍵任務(20ms輪詢1次)

命令管理器(cli)

適用于在線調(diào)試、參數(shù)配置等(參考使用cli_task.c),用戶可以通過串口輸出命令行控制設備行為、查詢設備狀態(tài)等功能。

命令格式

cli支持的命令行格式如下:

??????,,?,?,?
每行命令包含一個命令名稱 命令參數(shù)(可選),命令名稱及參數(shù)可以通過空格或者','進行分隔。

系統(tǒng)默認命令

cli系統(tǒng)自帶了2條默認命令,分別是"?"與"help"命令,輸入他們可以列出當前系統(tǒng)包含的命令列表,如下所示:

??????????-?alias?for?'help'
help??????-?list?all?command.
pm????????-?Low?power?control?command
reset?????-?reset?system
sysinfo???-?show?system?infomation.

適配命令管理器

完整的例子可以參考cli_task.c

static?cli_obj_t?cli;???????????????????????????????/*命令管理器對象?*/

/*?
?*?@brief???????命令行任務初始化
?*?@return??????none
?*/
?
static?void?cli_task_init(void)
{
????cli_port_t?p?=?{tty.write,?tty.read};???????????/*讀寫接口?*/

????cli_init(
嵌入式ARM

掃描二維碼,關(guān)注更多精彩內(nèi)容

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉