日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

STM32 进阶教程 5 - 内联函数

發布時間:2025/4/5 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 STM32 进阶教程 5 - 内联函数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

在計算機科學中,內聯函數(有時稱作在線函數或編譯時期展開函數)是一種編程語言結構,用來建議編譯器對一些特殊函數進行內聯擴展(有時稱作在線擴展);也就是說建議編譯器將指定的函數體插入并取代每一處調用該函數的地方(上下文),從而節省了每次調用函數帶來的額外時間開支。但在選擇使用內聯函數時,必須在程序占用空間和程序執行效率之間進行權衡,因為過多的比較復雜的函數進行內聯擴展將帶來很大的存儲資源開支。另外還需要特別注意的是對遞歸函數的內聯擴展可能引起部分編譯器的無窮編譯。

內聯擴展是一種特別的用于消除調用函數時所造成的固有的時間消耗方法。一般用于能夠快速執行的函數,因為在這種情況下函數調用的時間消耗顯得更為突出。這種方法對于很小的函數也有空間上的益處,并且它也使得一些其他的優化成為可能。

通常,在C語言中,內聯展開的功能可由帶參宏(Macros)在源碼級實現。內聯提供了幾個更好的方法:

1,宏調用并不執行類型檢查,甚至連正常參數也不檢查,但是函數調用卻要檢查。

2,C語言的宏使用的是文本替換,可能導致無法預料的后果,因為需要重新計算參數和操作順序。

3,在宏中的編譯錯誤很難發現,因為它們引用的是擴展的代碼,而不是程序員鍵入的。

許多結構體使用宏或者使用不同的語法來表達很難理解。內聯函數使用與普通函數相同的語言,可以隨意的內聯和不內聯。

4,內聯代碼的調試信息通常比擴展的宏代碼更有用。

?

對于基于C的編譯系統,內聯函數的使用可能大大增加編譯時間,因為每個調用該函數的地方都需要替換成函數體,代碼量的增加也同時帶來了潛在的編譯時間的增加。

本節我們將基于“STM32 進階教程 3 -? 軟件實現高精度延時 1”內能來介紹內聯函數的命定義與使用,以及其帶來的差別。

示例詳解

基于硬件平臺: STM32F10C8T6最小系統板, MCU 的型號是?STM32F103c8t6, 使用stm32cubemx 工具自動產生的配置工程,使用KEIL5編譯代碼。

?

?

本示例所用的最小系統板原理圖:

?

  • 關于CUBEMX工具及KEIL工具的操作將不再細講,如果還有不熟悉的可以查看之前的教程文檔。下面直接介紹工程配置:
  • ?

    ?

  • 系統時鐘樹
  • 定時器配置
  • 引腳配置
  • 中斷配置(保持默認)
  • ?

    ?

  • 工程代碼
  • 將事先準備好的delay.c和delay.h文件加到工程中,
  • Delay.h文件放在INC文件夾下即可。

  • 在main.c 中加入如下圖所示代碼:
  • ?

    ?

  • 編譯工程,下載程序看效果:PC13引腳產生周期為100us 占空比為50%的方波信號,同時可以看到LED是常的,通過邏輯分析儀工具,可以看到PC13引腳上的波形:
  • ?

    編譯后的代碼大小:

    對應的匯編代碼:

    ?

    接下來我們在delay_us函數實現前加上inline 關鍵字(也可以是 __inline 或 __INLINE)再次編譯。

    執行效果和代碼大小均不變:

    仿真查看其匯編代碼:

    發現并沒有像宏一將展開,其實現還是一樣,并沒有實現內聯展開,這里因為?inline只適合涵數體內代碼簡單的函數數使用,不能包含復雜的結構控制語句例如while、switch,并且內聯函數本身不能是直接遞歸函數(自己內部還調用自己的函數)。

    同時在keil的幫助文檔中不有如下說明

    接下來我們在main.c的USER CODE BEGIN 0區加入如下代碼:

    在USER CODE BEGIN 3中加入如下代碼:

    重新編譯,仿真,查看對應匯編代碼,發現其已經實現了內聯,g函數中的f(x),與 f(y)對應的源碼直接在g函數中:

    ?

    通過上面的實例,我們已基本學會基于keil MDK平臺的stm32 中內聯函數的使用,了解決了其使用的基本方法(更多關于inline的說明可以查看對應的幫助文檔):

    ?

    OK,本期實驗完成!下期見!同時如果大家有什么疑問或是有想了解的其它內容,也歡迎大家留言!!最后喜歡這個公眾號的同學們記得加關注了,會有不定期技術干貨推出!!

    文中源碼資料下載,在公眾號里給十三發消息:

    下載|STM32進階教程5

    ?

    關注十三公眾號

    ?

    總結

    以上是生活随笔為你收集整理的STM32 进阶教程 5 - 内联函数的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 亚洲国产精品成人综合在线 | 在线观看v片 | 欧美体内谢she精2性欧美 | 国产情侣一区二区三区 | 国产精品人人人人 | 欧美狠狠干 | 三级视频在线看 | 中文字幕一级二级三级 | 都市激情国产精品 | 欧美成人区 | 瑟瑟在线视频 | 国产群p| 嫩草av91 | 日韩在线观看你懂的 | 欧美第七页 | 久久久精品中文字幕麻豆发布 | 久久久久麻豆v国产精华液好用吗 | 久久人人草 | 天堂视频中文在线 | 亚洲影视在线 | 午夜精品偷拍 | 午夜精品福利视频 | 美丽的小蜜桃2:美丽人生 | 日本一区二区三区在线观看 | 亚洲色图一区二区三区 | 91大神在线看 | 少妇精品一区二区 | 法国极品成人h版 | 逼特逼视频在线观看 | 日韩视频在线播放 | 国产精品亚洲成在人线 | 亚洲国产精品午夜久久久 | 日韩少妇毛片 | 国产精品一区二区视频 | 2022国产精品| 无码熟妇人妻av | 亚洲无线看 | 亚洲成人aa | 3d动漫精品啪啪一区二区竹菊 | 免费古装一级淫片潘金莲 | 亚洲国内精品 | 色哟哟视频网站 | 色一色成人网 | 成人精品网 | 人人干人人干人人干 | 91麻豆精品久久久久蜜臀 | 亚洲国产精品视频 | 国模人体一区二区 | 伊人网伊人影院 | 亚洲高清色 | 国产精品日韩在线观看 | 丁香色婷婷 | 热播之家 | 国产黄色片子 | 人妻熟女一区二区三区app下载 | 日本黄色片. | 日本偷拍一区 | 四虎音影| 明星双性精跪趴灌满h | 国产新婚疯狂做爰视频 | 日本大尺度做爰呻吟舌吻 | 亚洲天堂2013 | 91麻豆成人精品国产免费网站 | 黄色小视频免费 | 欧美一区二区三区久久 | 黄色日韩视频 | 丰满女邻居的色诱4hd | 欧美女优在线观看 | 天天操天天爽天天干 | 成人久色 | 2019天天干 | 免费日本黄色片 | 欲求不满的岳中文字幕 | 在线看的av网站 | 欧美精产国品一二三区 | 制服丝袜第二页 | 浪浪视频污 | 国产成人久久 | 成人精品影院 | 成年人黄视频 | 久久久久国产精品区片区无码 | 91精品国产一区二区三竹菊影视 | 天堂一二三区 | 精品国产一区一区二区三亚瑟 | 91超碰在线播放 | 亚洲天堂免费在线观看视频 | 天天摸天天操天天爽 | 成人激情在线观看 | 色噜噜日韩精品欧美一区二区 | 久草影视网 | 日本xxxxxxxxx18 | 国产日韩网站 | 天堂在线官网 | 特级毛片爽www免费版 | 国产性―交―乱―色―情人 | 欧美性在线视频 | 亚洲一区二区色 | 日韩电影在线观看中文字幕 | 亚洲国产精品国自产拍av |