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

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

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

3天內不再提示

探究STM32Cube LL為何能高效的原因

5RJg_mcuworld ? 來源:fqj ? 2019-04-26 14:42 ? 次閱讀

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

而讀寫位的定義:

探究STM32Cube LL為何能高效的原因

這里面的紅定義,在眾多外設.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開發團隊設計了這么一個中間層軟件框架。

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

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

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

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

    關注

    180

    文章

    7601

    瀏覽量

    136251

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

文章出處:【微信號:mcuworld,微信公眾號:嵌入式資訊精選】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    STM32Cube知識大全

    本文檔內容包含了STM32Cube知識大全,不同知識點的圖解,希望對大家有所幫助。
    發表于 09-12 19:18 ?26次下載
    <b class='flag-5'>STM32Cube</b>知識大全

    STM32Cube學習之一:點燈

    STM32Cube學習之一:點燈
    發表于 12-12 15:30 ?20次下載

    介紹STM32Cube的特點及應用

    2014年STM32 Roadshow:STM32Cube簡介
    的頭像 發表于 07-05 00:26 ?5100次閱讀

    使用STM32Cube輕松開發STM32

    STM32CubeSTM32開發更輕松
    的頭像 發表于 07-03 04:30 ?5627次閱讀

    STM32CubeLL能高效原因

    STM32Cube LL高效原因
    的頭像 發表于 03-01 13:51 ?1927次閱讀

    STM32Cube到底包含哪些工具 ?

    STM32Cube到底包含哪些工具?
    的頭像 發表于 03-04 10:16 ?8402次閱讀

    STM32實戰 1 | STM32Cube生態系統認識與介紹

    STM32實戰 1 | STM32Cube生態系統認識與介紹STM32Cube Ecosystem STM生態系統STM32Cube MCU Packages(
    發表于 11-19 12:36 ?14次下載
    <b class='flag-5'>STM32</b>實戰 1 | <b class='flag-5'>STM32Cube</b>生態系統認識與介紹

    STM32Cube介紹

    STM32Cube介紹
    發表于 12-08 15:51 ?19次下載
    <b class='flag-5'>STM32Cube</b>介紹

    精雕細琢見真章《STM32Cube高效開發教程》

    我們編寫的新書《STM32Cube高效開發教程(基礎篇)》終于在各大電商平臺上架銷售了,這是值得眾多STM32開發者入手的一本新書,它是目前市面上第一本采用STM32
    發表于 12-31 19:28 ?340次下載
    精雕細琢見真章《<b class='flag-5'>STM32Cube</b><b class='flag-5'>高效</b>開發教程》

    DB3215 基于STM32 Amazon STM32Cube數據手冊

    DB3215 基于STM32 Amazon STM32Cube數據手冊
    發表于 11-23 08:27 ?1次下載
    DB3215 基于<b class='flag-5'>STM32</b> Amazon <b class='flag-5'>STM32Cube</b>數據手冊

    STM32Cube培訓指南

    電子發燒友網站提供《STM32Cube培訓指南.pdf》資料免費下載
    發表于 07-31 15:02 ?2次下載
    <b class='flag-5'>STM32Cube</b>培訓指南

    STM32Cube在線培訓

    電子發燒友網站提供《STM32Cube在線培訓.pdf》資料免費下載
    發表于 08-01 14:23 ?3次下載
    <b class='flag-5'>STM32Cube</b>在線培訓

    始使用X-CUBE-SBSFU STM32Cube擴展包

    電子發燒友網站提供《始使用X-CUBE-SBSFU STM32Cube擴展包.pdf》資料免費下載
    發表于 08-01 09:22 ?0次下載
    始使用X-<b class='flag-5'>CUBE</b>-SBSFU <b class='flag-5'>STM32Cube</b>擴展包

    STM32標準外設庫遷移至STM32Cube底層庫

    本應用筆記介紹了從現有使用STM32 SPL開發的基于STM32的應用程序遷移到使用STM32Cube LL驅動程序的任何其他類型的微控制器的步驟。本應用筆記匯總了將基于
    發表于 08-31 10:25 ?0次下載

    STM32Cube LL庫的巧妙之處

    STM32Cube LL庫的巧妙之處
    的頭像 發表于 09-27 16:26 ?1373次閱讀
    <b class='flag-5'>STM32Cube</b> <b class='flag-5'>LL</b>庫的巧妙之處