精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

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

函數(shù)調(diào)在嵌入式應(yīng)用設(shè)計(jì)中如何實(shí)現(xiàn)

strongerHuang ? 來源:大橙子瘋嵌入式 ? 作者:大橙子瘋嵌入式 ? 2022-11-28 09:16 ? 次閱讀

函數(shù)調(diào)用很好理解,即使剛學(xué)沒多久的朋友也知道函數(shù)調(diào)用是怎么實(shí)現(xiàn)的,即調(diào)用一個(gè)已經(jīng)封裝好的函數(shù),實(shí)現(xiàn)某個(gè)特定的功能。

把一個(gè)或者多個(gè)功能通過函數(shù)的方式封裝起來,對(duì)外只提供一個(gè)簡(jiǎn)單的函數(shù)接口,然后在其他地方調(diào)用即可

函數(shù)調(diào)用方式函數(shù)調(diào)用難道還能怎么調(diào)用?不就封裝好直接調(diào)用嗎???

函數(shù)調(diào)用方式分為兩種:直接調(diào)用和間接調(diào)用

直接調(diào)用

直接調(diào)用就是我們平常使用的方式,下面的方式就屬于直接調(diào)用了。

intSumFun(inta,intb)
{
returna+b;
}

intmain()
{
//直接調(diào)用定義好的函數(shù)
intsum=SumFun(5,6);
printf("sum=%d",sum);
return0;
}

間接調(diào)用
間接調(diào)用在初學(xué)時(shí)很難使用到,這是通過函數(shù)指針的方式實(shí)現(xiàn)的。

函數(shù)指針本質(zhì)是一個(gè)指針變量,是一個(gè)指向函數(shù)的指針(函數(shù)本身也是有地址的,指向的是函數(shù)入口);
指針函數(shù)本質(zhì)是一個(gè)函數(shù),其返回值為指針。

函數(shù)指針的用法如下:

typedefint(*FunctionCB)(int,int);

intSumFun(inta,intb)
{
returna+b;
}

intmain()
{
//將定義好的函數(shù)賦值給函數(shù)指針
FunctionCBpfnSum=SumFun;

//通過函數(shù)指針間接調(diào)用
intsum=pfnSum(5,6);
printf("sum=%d",sum);
return0;
}

什么場(chǎng)景使用

函數(shù)指針在軟件架構(gòu)分層設(shè)計(jì)中十分重要,因?yàn)榉謱釉O(shè)計(jì)中有一個(gè)設(shè)計(jì)原則,那就是下層函數(shù)不能直接調(diào)用上層函數(shù),那么可以通過函數(shù)指針的方式實(shí)現(xiàn);一般稱上層通過函數(shù)指針賦值給下層的函數(shù)為回調(diào)函數(shù)

什么情況會(huì)存在需要下層程序需要調(diào)用上層程序的呢?
比如串口數(shù)據(jù)接收,雖然可以通過查詢的方式接收,但是遠(yuǎn)不及通過串口中斷的方式接收及時(shí),當(dāng)接收完成時(shí),需要立即通知上層讀取數(shù)據(jù)進(jìn)行處理,而不是等待上層程序查詢讀取。

如何實(shí)現(xiàn)呢?
比如硬件抽象層/驅(qū)動(dòng)層中的串口模塊實(shí)現(xiàn)函數(shù)

/*************UART.c文件****************/
staticUartRecvCBsg_pfnUartRecv;

//設(shè)置數(shù)據(jù)幀接收處理回調(diào)函數(shù)
voidUART_SetRecvCallback(UartRecvCBpfnUartRecv)
{
sg_pfnUartRecv=pfnUartRecv;
}

voidUART_Task(void)
{
if(RecvEnd)
{
//數(shù)據(jù)一幀接收完成立即調(diào)用
if(sg_pfnUartRecv!=NULL)
{
sg_pfnUartRecv(UartRecvBuf,UartRecvLength);
}
}
}

/*************UART.h文件****************/
typedefvoid(*UartRecvCB)(constchar*,int);

externvoidUART_SetRecvCallback(UartRecvCBpfnUartRecv);
externvoidUART_Task(void);

應(yīng)用層代碼中實(shí)現(xiàn)回調(diào)函數(shù),并調(diào)用下層函數(shù)。

//回調(diào)函數(shù):串口數(shù)據(jù)處理
voidOnUartRecvProcess(constchar*pBuf,intlength)
{
//處理串口數(shù)據(jù)
printf("Recv:%s",pBuf);
}

intmain()
{
UART_SetRecvCallback(OnUartRecvProcess);

while(1)
{
if(TimeFlag)
{
UART_Task();
}
}
}

上述示例中通過函數(shù)指針的方式間接調(diào)用了應(yīng)用層的函數(shù),而且并不違背分層設(shè)計(jì)原則。
如果看代碼不能立即理解的話,可以嘗試通過下圖理解:

000e24ca-6eb4-11ed-8abf-dac502259ad0.png

審核編輯:郭婷

聲明:本文內(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)注

    5068

    文章

    19019

    瀏覽量

    303299
  • 接口
    +關(guān)注

    關(guān)注

    33

    文章

    8497

    瀏覽量

    150835

原文標(biāo)題:函數(shù)調(diào)用在嵌入式架構(gòu)設(shè)計(jì)中的應(yīng)用

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

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    mmc卡在嵌入式系統(tǒng)的使用

    隨著科技的發(fā)展,嵌入式系統(tǒng)在我們的日常生活扮演著越來越重要的角色。從智能手機(jī)到家用電器,再到工業(yè)控制系統(tǒng),嵌入式系統(tǒng)無處不在。存儲(chǔ)設(shè)備作為嵌入式系統(tǒng)
    的頭像 發(fā)表于 11-25 09:58 ?76次閱讀

    什么是嵌入式?一文讀懂嵌入式主板

    在現(xiàn)代科技浪潮嵌入式技術(shù)已成為支撐各種智能設(shè)備和系統(tǒng)運(yùn)行的核心力量。那么,究竟什么是嵌入式嵌入式系統(tǒng),顧名思義,是將計(jì)算機(jī)的硬件和軟件嵌入
    的頭像 發(fā)表于 10-16 10:14 ?498次閱讀

    嵌入式主板是什么意思?嵌入式主板全面解析

    嵌入式主板,通常被稱為嵌入式系統(tǒng)的核心組件,是一種用于控制和數(shù)據(jù)處理的計(jì)算機(jī)硬件,其設(shè)計(jì)旨在嵌入特定設(shè)備執(zhí)行專門任務(wù)。嵌入式主板如同是設(shè)備
    的頭像 發(fā)表于 09-30 10:05 ?369次閱讀

    嵌入式系統(tǒng)的實(shí)時(shí)操作系統(tǒng)

    嵌入式RTOS是嵌入式應(yīng)用程序運(yùn)行、相互交互和與外界通信的底層軟件機(jī)制。在本節(jié),您將了解嵌入式軟件開發(fā)人員使用哪些流行RTOS以及它們運(yùn)行的嵌入式
    的頭像 發(fā)表于 08-20 11:28 ?444次閱讀

    機(jī)器視覺在嵌入式的應(yīng)用

    機(jī)器視覺在嵌入式系統(tǒng)的應(yīng)用是一個(gè)廣泛而深入的話題,涉及到許多不同的領(lǐng)域和技術(shù)。 機(jī)器視覺在嵌入式系統(tǒng)的應(yīng)用 1. 引言 機(jī)器視覺是一種模擬人類視覺系統(tǒng)的功能,通過圖像采集、處理和分
    的頭像 發(fā)表于 07-16 10:30 ?452次閱讀

    嵌入式熱門領(lǐng)域有哪些?

    通過物聯(lián)網(wǎng)連接各種物理設(shè)備和傳感器,促使它們之間實(shí)現(xiàn)信息的交換和數(shù)據(jù)的共享。從智能家居到智能城市,物聯(lián)網(wǎng)的應(yīng)用不斷擴(kuò)展,為嵌入式系統(tǒng)工程師帶來了廣泛的就業(yè)機(jī)會(huì)和發(fā)展前景。 自動(dòng)駕駛 自動(dòng)駕駛技術(shù)作為
    發(fā)表于 07-16 09:23

    嵌入式fpga是什么意思

    嵌入式FPGA是指將FPGA技術(shù)集成到嵌入式系統(tǒng)的一種解決方案。嵌入式系統(tǒng)是一種為特定應(yīng)用而設(shè)計(jì)的計(jì)算機(jī)系統(tǒng),它通常包括處理器、內(nèi)存、外設(shè)接口等組件,并且被
    的頭像 發(fā)表于 03-15 14:29 ?1195次閱讀

    fpga是嵌入式

    FPGA(現(xiàn)場(chǎng)可編程門陣列)不是嵌入式系統(tǒng),但FPGA在嵌入式系統(tǒng)中有著重要的應(yīng)用。
    的頭像 發(fā)表于 03-14 17:19 ?2143次閱讀

    ??嵌入式回調(diào)函數(shù)實(shí)現(xiàn)方法

    回調(diào)函數(shù)的命名規(guī)范沒有固定的標(biāo)準(zhǔn),但是根據(jù)通用慣例和編碼規(guī)范,回調(diào)函數(shù)的命名應(yīng)該能夠反映函數(shù)的作用和功能,讓其他開發(fā)者能夠快速理解并使用。
    發(fā)表于 03-04 14:49 ?647次閱讀

    嵌入式系統(tǒng)發(fā)展前景?

    設(shè)備、健康監(jiān)測(cè)等領(lǐng)域有著廣泛的應(yīng)用前景。隨著人們對(duì)健康的重視程度不斷提高,嵌入式系統(tǒng)將更為深入地應(yīng)用于醫(yī)療設(shè)備和健康護(hù)理實(shí)現(xiàn)個(gè)人健康管理的智能化和實(shí)時(shí)化。 汽車電子和自動(dòng)駕駛是嵌入式
    發(fā)表于 02-22 14:09

    嵌入式學(xué)習(xí)步驟

    硬件組件。 (4).開發(fā)固件:編寫嵌入式系統(tǒng)的固件,這是嵌入式系統(tǒng)的軟件部分。固件負(fù)責(zé)控制硬件并執(zhí)行特定任務(wù)。 (5).調(diào)試和測(cè)試:在將嵌入式系統(tǒng)部署到實(shí)際環(huán)境之前,您需要對(duì)其進(jìn)行調(diào)
    發(fā)表于 02-02 15:24

    啥是嵌入式嵌入式都有啥?薪資如何?前景如何

    嵌入式系統(tǒng)(Embedded Systems)是一種特殊類型的計(jì)算機(jī)系統(tǒng),被嵌入到其他設(shè)備或系統(tǒng),用于執(zhí)行特定的任務(wù)或控制特定的功能。這些系統(tǒng)通常設(shè)計(jì)用于特定的應(yīng)用領(lǐng)域,具有特定的硬件和軟件要求
    的頭像 發(fā)表于 01-17 16:39 ?848次閱讀
    啥是<b class='flag-5'>嵌入式</b>?<b class='flag-5'>嵌入式</b>都有啥?薪資如何?前景如何

    嵌入式系統(tǒng)堆棧監(jiān)控的作用

    在微控制器或微處理器,堆棧是內(nèi)存的一個(gè)保留區(qū)域,用于存儲(chǔ)臨時(shí)數(shù)據(jù)和函數(shù)調(diào)用信息,管理函數(shù)的執(zhí)行,跟蹤返回地址、局部變量和函數(shù)參數(shù)。堆棧監(jiān)控是嵌入式
    的頭像 發(fā)表于 01-05 11:13 ?467次閱讀

    嵌入式open函數(shù)的使用

    嵌入式系統(tǒng)是指嵌入到其他設(shè)備或系統(tǒng),用于控制和管理硬件資源的計(jì)算機(jī)系統(tǒng)。在嵌入式系統(tǒng),通常需要與外部設(shè)備進(jìn)行數(shù)據(jù)交互,例如讀取傳感器數(shù)據(jù)
    的頭像 發(fā)表于 01-04 15:51 ?627次閱讀

    什么是嵌入式系統(tǒng)?嵌入式系統(tǒng)的具體應(yīng)用

    嵌入式,一般是指嵌入式系統(tǒng)。用于控制、監(jiān)視或者輔助操作機(jī)器和設(shè)備的裝置。
    的頭像 發(fā)表于 12-20 13:33 ?2406次閱讀