色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

函數調在嵌入式應用設計中如何實現

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

函數調用很好理解,即使剛學沒多久的朋友也知道函數調用是怎么實現的,即調用一個已經封裝好的函數,實現某個特定的功能。

把一個或者多個功能通過函數的方式封裝起來,對外只提供一個簡單的函數接口,然后在其他地方調用即可

函數調用方式函數調用難道還能怎么調用?不就封裝好直接調用嗎???

函數調用方式分為兩種:直接調用和間接調用

直接調用

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

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

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

間接調用
間接調用在初學時很難使用到,這是通過函數指針的方式實現的。

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

函數指針的用法如下:

typedefint(*FunctionCB)(int,int);

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

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

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

什么場景使用

函數指針在軟件架構分層設計中十分重要,因為分層設計中有一個設計原則,那就是下層函數不能直接調用上層函數,那么可以通過函數指針的方式實現;一般稱上層通過函數指針賦值給下層的函數為回調函數

什么情況會存在需要下層程序需要調用上層程序的呢?
比如串口數據接收,雖然可以通過查詢的方式接收,但是遠不及通過串口中斷的方式接收及時,當接收完成時,需要立即通知上層讀取數據進行處理,而不是等待上層程序查詢讀取。

如何實現呢?
比如硬件抽象層/驅動層中的串口模塊實現函數

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

//設置數據幀接收處理回調函數
voidUART_SetRecvCallback(UartRecvCBpfnUartRecv)
{
sg_pfnUartRecv=pfnUartRecv;
}

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

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

externvoidUART_SetRecvCallback(UartRecvCBpfnUartRecv);
externvoidUART_Task(void);

應用層代碼中實現回調函數,并調用下層函數。

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

intmain()
{
UART_SetRecvCallback(OnUartRecvProcess);

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

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

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

審核編輯:郭婷

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 嵌入式
    +關注

    關注

    5090

    文章

    19176

    瀏覽量

    306888
  • 接口
    +關注

    關注

    33

    文章

    8691

    瀏覽量

    151693

原文標題:函數調用在嵌入式架構設計中的應用

文章出處:【微信號:strongerHuang,微信公眾號:strongerHuang】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    嵌入式主板的概述與發展

    隨著科技的迅猛發展,嵌入式系統在現代電子產品扮演著越來越重要的角色。嵌入式主板作為嵌入式系統的核心組件之一,承擔著控制、處理和通訊等多種功能。本文將對
    的頭像 發表于 01-13 16:30 ?247次閱讀
    <b class='flag-5'>嵌入式</b>主板的概述與發展

    新手怎么學嵌入式?

    基本的概念。嵌入式系統是一種將計算機技術嵌入到特定設備的系統,它通常具有特定的功能和有限的資源。你需要學習一些計算機基礎知識,如數據結構、操作系統、計算機組成原理等。這些知識將幫助你理解嵌入
    發表于 12-12 10:51

    什么是嵌入式人工智能

    嵌入式人工智能是指將人工智能技術應用于嵌入式系統的一種技術。嵌入式系統是嵌入到其他設備或系統
    的頭像 發表于 12-11 09:23 ?379次閱讀
    什么是<b class='flag-5'>嵌入式</b>人工智能

    mmc卡在嵌入式系統的使用

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

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

    在現代科技浪潮嵌入式技術已成為支撐各種智能設備和系統運行的核心力量。那么,究竟什么是嵌入式嵌入式系統,顧名思義,是將計算機的硬件和軟件嵌入
    的頭像 發表于 10-16 10:14 ?1341次閱讀

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

    嵌入式主板,通常被稱為嵌入式系統的核心組件,是一種用于控制和數據處理的計算機硬件,其設計旨在嵌入特定設備執行專門任務。嵌入式主板如同是設備
    的頭像 發表于 09-30 10:05 ?767次閱讀

    嵌入式系統的實時操作系統

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

    機器視覺在嵌入式的應用

    機器視覺在嵌入式系統的應用是一個廣泛而深入的話題,涉及到許多不同的領域和技術。 機器視覺在嵌入式系統的應用 1. 引言 機器視覺是一種模擬人類視覺系統的功能,通過圖像采集、處理和分
    的頭像 發表于 07-16 10:30 ?586次閱讀

    嵌入式熱門領域有哪些?

    通過物聯網連接各種物理設備和傳感器,促使它們之間實現信息的交換和數據的共享。從智能家居到智能城市,物聯網的應用不斷擴展,為嵌入式系統工程師帶來了廣泛的就業機會和發展前景。 自動駕駛 自動駕駛技術作為
    發表于 07-16 09:23

    嵌入式熱門發展方向有哪些?

    良好的感知能力,能夠根據復雜的環境作出優良的決策。此外,嵌入式系統在計算機視覺方面的應用,可以有效的識別和定位目標,采集相關的信息,能夠實現人臉識別、行車輔助、運動跟蹤等實時視覺應用。在多媒體
    發表于 04-11 14:17

    嵌入式fpga是什么意思

    嵌入式FPGA是指將FPGA技術集成到嵌入式系統的一種解決方案。嵌入式系統是一種為特定應用而設計的計算機系統,它通常包括處理器、內存、外設接口等組件,并且被
    的頭像 發表于 03-15 14:29 ?1342次閱讀

    fpga是嵌入式

    FPGA(現場可編程門陣列)不是嵌入式系統,但FPGA在嵌入式系統中有著重要的應用。
    的頭像 發表于 03-14 17:19 ?2459次閱讀

    ??嵌入式回調函數實現方法

    回調函數的命名規范沒有固定的標準,但是根據通用慣例和編碼規范,回調函數的命名應該能夠反映函數的作用和功能,讓其他開發者能夠快速理解并使用。
    發表于 03-04 14:49 ?798次閱讀

    嵌入式系統發展前景?

    設備、健康監測等領域有著廣泛的應用前景。隨著人們對健康的重視程度不斷提高,嵌入式系統將更為深入地應用于醫療設備和健康護理實現個人健康管理的智能化和實時化。 汽車電子和自動駕駛是嵌入式
    發表于 02-22 14:09

    嵌入式學習步驟

    硬件組件。 (4).開發固件:編寫嵌入式系統的固件,這是嵌入式系統的軟件部分。固件負責控制硬件并執行特定任務。 (5).調試和測試:在將嵌入式系統部署到實際環境之前,您需要對其進行調
    發表于 02-02 15:24
    主站蜘蛛池模板: 一个人在线观看免费高清视频 | 亚洲中文久久精品AV无码 | 99久久99久久久精品齐齐鬼色 | 天津相声广播在线收听 | 色聚网久久综合 | 小学生偷拍妈妈视频遭性教育 | 99精品视频在线观看re | 97色香蕉在线 | 99精品视频在线免费观看 | 国产主播福利一区二区 | 十分钟免费观看大全视频 | 精品国产在天天线在线麻豆 | 伦理片免费秋霞e | 色多多污污版免费下载安装 | 色窝窝亚洲AV在线观看 | 高中生高潮抽搐喷出白浆视频 | 国产精品自在在线午夜精品 | 国产网站免费观看 | 四虎国产精品高清在线观看 | 黄色网址在线免费观看 | 校花娇喘呻吟校长陈若雪视频 | 桥本有菜护士 | 好看AV中文字幕在线观看 | 国产一区亚洲 | 久久兔费黄A级毛片高清 | 妖精视频在线观看高清 | 午夜神器18以下不能进免费 | 日本电影小姐 | 国产精品视频免费视频 | 免费无遮挡又黄又爽网站 | 青青草原亚洲 | 久久青草免费91线频观看站街 | 熟妇少妇任你躁在线无码 | 婷婷午夜影院 | 国产亚洲综合视频 | 攻把受做哭边走边肉楼梯PLAY | 亚洲国产精品嫩草影院久久 | 116美女写真成人午夜视频 | 成人免费肉动漫无遮网站 | 国产精品久久久久久52AVAV | 99久久免费精品 |