国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

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

3天內不再提示

STM32CubeLL能高效的原因

黃工的嵌入式技術圈 ? 來源:黃工的嵌入式技術圈 ? 作者:黃工的嵌入式技術 ? 2020-03-01 13:51 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

ST的庫,有很多巧妙之處,值得大家借鑒。今天就來講講STM32Cbue LL庫中的一點小知識。

1寫在前面

有些應用要求MCU能高效處理,特別是跑一些算法時,對CPU執行效率這一塊有要求。

網上有很多文章說STM32CubeHAL執行效率不高,代碼量大等問題,導致很多沒入門,或初學的朋友產生各種各樣的疑惑。

承認,HAL相對來說有這些問題,那么與之對應的STM32CubeLL恰好避免了這樣的問題。

2LL能高效的原因

簡單總結一下原因:巧妙運用C語言靜態的,內聯函數直接操作寄存器

當然,這是其中重要的原因,還有一些其它原因,這里不描述。

你會在LL庫.h文件中發現大量類似,靜態,內聯函數直接讀寫寄存器的函數。

比如:讀寫IO口

__STATIC_INLINE uint32_t LL_GPIO_ReadOutputPort(GPIO_TypeDef *GPIOx){ return (uint32_t)(READ_REG(GPIOx->ODR));} __STATIC_INLINE void LL_GPIO_SetOutputPin(GPIO_TypeDef *GPIOx, uint32_t PinMask){ WRITE_REG(GPIOx->BSRR, (PinMask >> GPIO_PIN_MASK_POS) & 0x0000FFFFU);}

其中__STATIC_INLINE,就是靜態、內聯:

#define __STATIC_INLINE static __inline

而讀寫位的定義:

這里面的紅定義,在眾多外設.h中都在調用。比如使能USART:

LL使能USART:

__STATIC_INLINE void LL_USART_Enable(USART_TypeDef *USARTx){ SET_BIT(USARTx->CR1, USART_CR1_UE);}

標準外設庫使能USART:

void USART_Cmd(USART_TypeDef* USARTx, FunctionalState NewState){ /* Check the parameters */ assert_param(IS_USART_ALL_PERIPH(USARTx)); assert_param(IS_FUNCTIONAL_STATE(NewState)); if (NewState != DISABLE) { /* Enable the selected USART by setting the UE bit in the CR1 register */ USARTx->CR1 |= USART_CR1_UE; } else { /* Disable the selected USART by clearing the UE bit in the CR1 register */ USARTx->CR1 &= (uint16_t)~((uint16_t)USART_CR1_UE); }}

你會明顯發現:LL庫的執行效率更高。

3拓展:內聯函數

寫到這里,就順便復習一下內聯函數。

內聯函數是一種編程語言結構,用來建議編譯器對一些特殊函數進行內聯擴展。 ---來自百度百科

通常,程序執行時,處理器從內存中讀取代碼執行。當程序中調用一個函數時,程序跳到存儲器中保存函數的位置,開始讀取代碼執行,執行完后再返回。

為了提高速度,C語言定義了inline函數,告訴編譯器把函數代碼在編譯時直接拷貝到程序中,這樣就不用執行時另外讀取函數代碼。

提示:

當內聯函數很大時,會有相反的作用,因此一般比較小的函數才使用內聯函數。

4拓展:軟件框架思維

LL之所以高效,是因為它巧妙運用了一些C語言知識,沒有太多封裝,直接或間接對寄存器進行操作。

而能這樣實現,歸功于ST開發團隊設計了這么一個中間層軟件框架。

對于有大型項目開發經驗的人來說,一個項目的框架對整個項目影響很大。

就好比你建一棟樓,如果樓層框架都沒造好,你覺得這棟樓質量會好嗎?

所以,這里就提到,我們編程時,特別項目較大,需要考慮一下軟件框架,一個好的框架能讓你你的項目達到事半功倍的效果。

推薦閱讀:

1.LPTIM低功耗定時器有哪些獨特功能

2.STM32F1系列的DEBUG調試功能需要配置嗎?

5最后

我的知乎:strongerHuang

我的網站:www.strongerhuang.com

若覺得文章對你有幫助,隨手點“在看”、轉發分享,也是我繼續更新的動力。

掃描下面二維碼、關注公眾號,在底部菜單中查看更多精彩內容!

長按識別圖中二維碼關注

原文標題:STM32Cube LL能高效的原因

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

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

    關注

    32

    文章

    1187

    瀏覽量

    132535
  • stm32cubemx
    +關注

    關注

    5

    文章

    290

    瀏覽量

    17358
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    LAT1171+STM32F745 USART1 Bootloader 失敗原因分析與解決

    使用 STM32F745 進行產品開發的時候,出現了使用 STM32CubeProgramer 無法通過 USART1 Bootloader 進行程序升級的問題。為了解決客戶的問題,我在 NUCLEO-F746ZG 開發板上,復現了同樣的現象,本文針對這個現象,分析了該問
    發表于 01-11 17:33 ?0次下載

    STM32讀保護的解除和出現的原因,使用串口和ST-LINK Utility解除讀保護

    STM32讀保護 讀保護保護出現的現象 1、串口下載會出現: 當出現這個讀保護字樣的時候就是芯片已經讀保護了 2、當使用keil軟件下載的時候出現 Error: Flash Download
    的頭像 發表于 12-30 10:10 ?1256次閱讀
    <b class='flag-5'>STM32</b>讀保護的解除和出現的<b class='flag-5'>原因</b>,使用串口和ST-LINK Utility解除讀保護

    EM儲網關 ZWS智慧儲云應用(22) — 如何便捷高效的管理大量EMS及儲柜?

    平臺后,需要對這些設備做長期的運維管理以及部分運營工作,如何通過高效手段方便有序的管理這些設備,成為關鍵問題。解決方案ZLG智慧儲云平臺,從兩個維度解決EMS設
    的頭像 發表于 12-25 11:44 ?274次閱讀
    EM儲<b class='flag-5'>能</b>網關 ZWS智慧儲<b class='flag-5'>能</b>云應用(22) — 如何便捷<b class='flag-5'>高效</b>的管理大量EMS及儲<b class='flag-5'>能</b>柜?

    法拉電容可以做太陽嗎?

    法拉電容因其快充快放、長壽命優勢,成為太陽領域的新型高效方案。
    的頭像 發表于 12-20 09:19 ?895次閱讀
    法拉電容可以做太陽<b class='flag-5'>能</b>儲<b class='flag-5'>能</b>嗎?

    搭載新潔NCE1216,解鎖高效應用新可能

    在電子技術蓬勃發展的當下,功率半導體器件已成為推動電子系統高效運行的關鍵力量。搭載新潔NCE1216,以其卓越的性能和廣泛的應用場景,解鎖高效應用新可能。技術亮點:賦器件性能飛躍N
    的頭像 發表于 10-25 16:05 ?671次閱讀
    搭載新潔<b class='flag-5'>能</b>NCE1216,解鎖<b class='flag-5'>高效</b>應用新可能

    Acrel 平臺打破數據孤島,儲管理更高效

    、智能控制與全生命周期管理 ,核心目標是保障儲系統 “安全、穩定、高效” 運行,廣泛適配工商業儲電站、光儲充一體化場站、微電網儲系統等多元應用場景。 二、核心功能 (一)實時監測
    的頭像 發表于 09-02 10:21 ?648次閱讀
    Acrel 平臺打破數據孤島,儲<b class='flag-5'>能</b>管理更<b class='flag-5'>高效</b>

    STM32CubeMX配置STM32G070RBT6TR時為什么無法使PVD中斷?

    STM32CubeMX 配置STM32G070RBT6TR時無法使PVD中斷
    發表于 06-18 07:59

    STM32CubeIDE報錯的原因

    在下載的時候會出現如圖所示的問題,但程序可以下進開發板,燈也點亮。但不知道這個報錯的原因。求幫助
    發表于 06-16 07:32

    stm32cubeIDE使用malloc失敗是什么原因

    我在stm32cubeIDE環境下,已經分配了足夠的棧與堆空間,但是我在的使用malloc分配內存時,一直分配不成功,這是什么原因
    發表于 06-09 07:24

    stm32cubeIDE使用malloc失敗是什么原因

    我在stm32cubeIDE環境下,已經分配了足夠的棧與堆空間,但是我在的使用malloc分配內存時,一直分配不成功,這是什么原因
    發表于 06-04 07:18

    stm32cubeIDE使用malloc失敗的原因

    我在stm32cubeIDE環境下,已經分配了足夠的棧與堆空間,但是我在的使用malloc分配內存時,一直分配不成功,這是什么原因
    發表于 04-27 06:45

    光伏電站運維系統讓太陽發電更高效

    ?????? 光伏電站運維系統讓太陽發電更高效 ?????? 光伏電站運維系統是一套幫助管理太陽發電站的技術工具,它的作用是讓電站運行更穩定、發電更高效,同時減少人工維護的成本和麻
    的頭像 發表于 03-28 16:22 ?1029次閱讀
    光伏電站運維系統讓太陽<b class='flag-5'>能</b>發電更<b class='flag-5'>高效</b>

    晶科能源為恒源新交付N型TOPCon高效雙面組件

    近日,晶科能源為恒源新交付N型TOPCon高效雙面組件,助力其張北500MW光伏項目與沽源240MW光伏項目全容并網投運。
    的頭像 發表于 03-28 14:25 ?1100次閱讀

    stm32h7s78 rcc pll2時鐘使失敗的原因

    使用的板卡是 stm32h7s78-dk,啟動流程是 boot + flash app 的方式,boot 參考的 xip 示例,xip 時鐘綁定在 hclk 上。 問題 在 app 代碼中,初始化
    發表于 03-14 10:33

    STM32F103VFT6的程序直接在STM32F103VGT6上運行嗎?

    STM32F103VGT6代替 STM32F103VFT6嗎? 也就是STM32F103VFT6的程序直接在
    發表于 03-12 06:39