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

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

    文章

    1136

    瀏覽量

    129057
  • stm32cubemx
    +關注

    關注

    5

    文章

    284

    瀏覽量

    14904
收藏 人收藏

    評論

    相關推薦

    基于STM32設計的大氣氣壓檢測裝置

    本項目計劃基于STM32微控制器平臺來實現一個緊湊且高效的大氣氣壓檢測系統。選擇STM32作為主控芯片的原因在于其擁有強大的處理能力、豐富的外設接口以及良好的低功耗特性,非常適合用來構
    的頭像 發表于 01-09 11:15 ?589次閱讀
    基于<b class='flag-5'>STM32</b>設計的大氣氣壓檢測裝置

    電容儲焊接技術的先進控制器:實現高效精密焊接的新突破

    隨著工業4.0時代的到來,制造業對焊接技術的需求日益精細且高效,而電容儲焊接技術憑借其獨特優勢,在眾多焊接方法中脫穎而出,尤其是配備先進控制器的電容儲焊接系統,更是實現了高效精密焊
    的頭像 發表于 12-06 09:06 ?217次閱讀

    STM32H503開發(2)----STM32CubeProgrammer燒錄

    STM32CubeProgrammer (STM32CubeProg) 是一款用于編程STM32產品的全功能多操作系統軟件工具。 它提供了一個易用高效的環境,通過調試接口(JTAG和
    的頭像 發表于 11-28 09:25 ?836次閱讀
    <b class='flag-5'>STM32</b>H503開發(2)----<b class='flag-5'>STM32</b>CubeProgrammer燒錄

    高效PCS的選擇指南

    隨著可再生能源的快速發展和電力系統的日益復雜化,儲技術成為解決能源供需平衡、提高電網穩定性的重要手段。功率轉換系統(PCS)作為儲系統的核心,其性能直接影響到儲系統的效率和可靠性。 1. 了解
    的頭像 發表于 10-30 10:45 ?511次閱讀

    線束:面向儲系統的高效能電池連接技術

    線束是儲系統中不可或缺的連接組件,承擔著傳輸電能的關鍵角色。為了確保整個儲系統的順暢運行,數據和信號的傳輸以及電力供應都依賴于這些線束的高效連接。
    的頭像 發表于 09-05 14:57 ?602次閱讀

    太陽逆變器報警是什么原因

    的常見原因 直流輸入電壓異常 (1)直流輸入電壓過高:當太陽電池板的輸出電壓超過逆變器的額定輸入電壓時,逆變器會發出過壓報警。這可能是由于太陽電池板的配置不合理,或者逆變器的額定輸入電壓過低造成的。 解決方法
    的頭像 發表于 08-15 10:44 ?1674次閱讀

    斷路器合不上閘的原因

    以下是萬斷路器合不上閘的原因的主要內容: 萬斷路器的基本原理和功能 萬斷路器是一種用于保護電力系統的設備,可以自動切斷故障電路,以防止設備損壞和事故的發生。 萬
    的頭像 發表于 07-31 15:21 ?2434次閱讀

    stm32cubeprogrammer下載不了是什么原因

    stm32cubeprogrammer下載不了,什么原因
    發表于 07-02 06:21

    電站的智能心臟:高效網關驅動自動化管理

    電站安全和高效地運行和維護。 系統結構 云端: 儲電站綜合物聯網平臺 設備: 儲網關、檢測設備 4G上云組網: 具有覆蓋廣、速度快、依賴性低、實施效率高、免布線等特點。 系統監控
    的頭像 發表于 06-28 09:28 ?329次閱讀
    儲<b class='flag-5'>能</b>電站的智能心臟:<b class='flag-5'>高效</b>網關驅動自動化管理

    STM32的USB的數據通過DMA直接傳到SPI接口嗎?STM32的DMA訪問USB寄存器不?

    提問:STM32的USB的數據通過DMA直接傳到SPI接口嗎?STM32的DMA訪問USB寄存器不?多謝啦
    發表于 05-17 14:30

    STM32L151 Jlink正常燒寫程序,但stm32就是不能正常工作是為什么?

    新做了塊板子,用的是STM32L151,用J-Link正常連接,燒錄程序。但MCU就是不工作。用示波器量了晶振的波形,沒有波形,應該是晶振根本沒有起振。單片機上的3.3V電壓供應正常,晶振初步判斷是好的。不知有沒有人遇到過類似情況?請教一下是什么
    發表于 04-22 07:14

    STM32F051 USART1接收數據亂碼的原因

    求助:STM32F051 USART1發送沒有中斷,接收使中斷,發送數據正常,接收數據亂碼,確認進入了接收中斷,但數據出現亂碼,請問有哪些原因
    發表于 04-16 06:14

    STM32L476RG UART_IT_IDLE一打開就卡死的原因

    最近再調試STM32L476RG 串口,使用串口2,在驗證DMA空閑中斷的時候, 發現初始化的時候 __HAL_UART_ENABLE_IT( huart2, UART_IT_IDLE);//使
    發表于 04-15 07:05

    STM32G473VETx使用GPIO口作為電源芯片的使信號,4個電源模塊其中一個模塊不行的原因

    在使用STM32G473VETx芯片時,使用GPIO口作為電源芯片的使信號(直連,未接串阻),配置為推挽輸出,電源芯片實際需最低min1.2V和1.4V高電平,低電平均為max0.4V,有4個這樣
    發表于 04-08 06:01

    STM32H747I-DISCO demo燒寫失敗的原因

    binary1.024 Apr 2019我下載了這個兩然后進行測試,STM32H747I-DISCO_Tutti-Frutti_demo的M4hex燒寫,但是M7的hex就能燒寫了,這是什么原因呢? 使用富文本編輯器編輯
    發表于 03-08 07:15
    主站蜘蛛池模板: 欧美内射AAAAAAXXXXX| 999久久精品国产| 北原多香子qvod| 青青娱乐网| 朝鲜黄色录像| 色婷婷亚洲五月| 成年人视频在线免费| 日本特黄的免费大片视频| 色综合久久88色综合天天提莫| yy4408午夜场理论片| 日本工口生肉全彩大全| 被窝国产理论一二三影院| 青青草在现线免费观看| 俄罗斯一级毛片aaaa| 午夜成a人片在线观看| 99热在线视频这里只精品| 蜜臀久久99精品久久久久久做爰| 中文字幕s级优女区| 美女全光末满18勿进| 扒开粉嫩的小缝末成年小美女| 日韩视频中文在线一区| 国产乱码精品AAAAAAAA| 亚洲欧美一区二区三区蜜芽 | 欧美人成在线观看ccc36| yellow日本动漫免费观看| 日日碰狠狠添天天爽| 国产九九熟女在线视频| 亚洲欧美日本久久综合网站| 伦理片在线3348| 疯狂小护士| 亚洲一区二区影院| 明星三级电影| 国产成人精品免费视频下载| 亚洲精品中文字幕一二三四区| 蜜柚视频在线观看全集免费观看| 粉嫩AV国产一区二区福利姬| 亚洲人女同志video| 欧美性爱-第1页| 精品国产品国语在线不卡丶| 手机看片国产免费| 精品人妻一区二区三区视频53 |