chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

STM32CubeLL能高效的原因

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

掃碼添加小助手

加入工程師交流群

ST的庫(kù),有很多巧妙之處,值得大家借鑒。今天就來(lái)講講STM32Cbue LL庫(kù)中的一點(diǎn)小知識(shí)。

1寫(xiě)在前面

有些應(yīng)用要求MCU能高效處理,特別是跑一些算法時(shí),對(duì)CPU執(zhí)行效率這一塊有要求。

網(wǎng)上有很多文章說(shuō)STM32CubeHAL執(zhí)行效率不高,代碼量大等問(wèn)題,導(dǎo)致很多沒(méi)入門(mén),或初學(xué)的朋友產(chǎn)生各種各樣的疑惑。

承認(rèn),HAL相對(duì)來(lái)說(shuō)有這些問(wèn)題,那么與之對(duì)應(yīng)的STM32CubeLL恰好避免了這樣的問(wèn)題。

2LL能高效的原因

簡(jiǎn)單總結(jié)一下原因:巧妙運(yùn)用C語(yǔ)言靜態(tài)的,內(nèi)聯(lián)函數(shù)直接操作寄存器。

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

你會(huì)在LL庫(kù).h文件中發(fā)現(xiàn)大量類似,靜態(tài),內(nèi)聯(lián)函數(shù)直接讀寫(xiě)寄存器的函數(shù)。

比如:讀寫(xiě)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,就是靜態(tài)、內(nèi)聯(lián):

#define __STATIC_INLINE static __inline

而讀寫(xiě)位的定義:

這里面的紅定義,在眾多外設(shè).h中都在調(diào)用。比如使能USART:

LL使能USART:

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

標(biāo)準(zhǔn)外設(shè)庫(kù)使能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); }}

你會(huì)明顯發(fā)現(xiàn):LL庫(kù)的執(zhí)行效率更高。

3拓展:內(nèi)聯(lián)函數(shù)

寫(xiě)到這里,就順便復(fù)習(xí)一下內(nèi)聯(lián)函數(shù)。

內(nèi)聯(lián)函數(shù)是一種編程語(yǔ)言結(jié)構(gòu),用來(lái)建議編譯器對(duì)一些特殊函數(shù)進(jìn)行內(nèi)聯(lián)擴(kuò)展。 ---來(lái)自百度百科

通常,程序執(zhí)行時(shí),處理器從內(nèi)存中讀取代碼執(zhí)行。當(dāng)程序中調(diào)用一個(gè)函數(shù)時(shí),程序跳到存儲(chǔ)器中保存函數(shù)的位置,開(kāi)始讀取代碼執(zhí)行,執(zhí)行完后再返回。

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

提示:

當(dāng)內(nèi)聯(lián)函數(shù)很大時(shí),會(huì)有相反的作用,因此一般比較小的函數(shù)才使用內(nèi)聯(lián)函數(shù)。

4拓展:軟件框架思維

LL之所以高效,是因?yàn)樗擅钸\(yùn)用了一些C語(yǔ)言知識(shí),沒(méi)有太多封裝,直接或間接對(duì)寄存器進(jìn)行操作。

而能這樣實(shí)現(xiàn),歸功于ST開(kāi)發(fā)團(tuán)隊(duì)設(shè)計(jì)了這么一個(gè)中間層軟件框架。

對(duì)于有大型項(xiàng)目開(kāi)發(fā)經(jīng)驗(yàn)的人來(lái)說(shuō),一個(gè)項(xiàng)目的框架對(duì)整個(gè)項(xiàng)目影響很大。

就好比你建一棟樓,如果樓層框架都沒(méi)造好,你覺(jué)得這棟樓質(zhì)量會(huì)好嗎?

所以,這里就提到,我們編程時(shí),特別項(xiàng)目較大,需要考慮一下軟件框架,一個(gè)好的框架能讓你你的項(xiàng)目達(dá)到事半功倍的效果。

推薦閱讀:

1.LPTIM低功耗定時(shí)器有哪些獨(dú)特功能

2.STM32F1系列的DEBUG調(diào)試功能需要配置嗎?

5最后

我的知乎:strongerHuang

我的網(wǎng)站:www.strongerhuang.com

若覺(jué)得文章對(duì)你有幫助,隨手點(diǎn)“在看”、轉(zhuǎn)發(fā)分享,也是我繼續(xù)更新的動(dòng)力。

掃描下面二維碼、關(guān)注公眾號(hào),在底部菜單中查看更多精彩內(nèi)容!

長(zhǎng)按識(shí)別圖中二維碼關(guān)注

原文標(biāo)題:STM32Cube LL能高效的原因

文章出處:【微信公眾號(hào):strongerHuang】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • ST
    ST
    +關(guān)注

    關(guān)注

    32

    文章

    1176

    瀏覽量

    130491
  • stm32cubemx
    +關(guān)注

    關(guān)注

    5

    文章

    286

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    STM32CubeIDE報(bào)錯(cuò)的原因?

    在下載的時(shí)候會(huì)出現(xiàn)如圖所示的問(wèn)題,但程序可以下進(jìn)開(kāi)發(fā)板,燈也點(diǎn)亮。但不知道這個(gè)報(bào)錯(cuò)的原因。求幫助
    發(fā)表于 06-16 07:32

    stm32cubeIDE使用malloc失敗是什么原因?

    我在stm32cubeIDE環(huán)境下,已經(jīng)分配了足夠的棧與堆空間,但是我在的使用malloc分配內(nèi)存時(shí),一直分配不成功,這是什么原因?
    發(fā)表于 06-09 07:24

    stm32cubeIDE使用malloc失敗是什么原因?

    我在stm32cubeIDE環(huán)境下,已經(jīng)分配了足夠的棧與堆空間,但是我在的使用malloc分配內(nèi)存時(shí),一直分配不成功,這是什么原因
    發(fā)表于 06-04 07:18

    stm32cubeIDE使用malloc失敗的原因?

    我在stm32cubeIDE環(huán)境下,已經(jīng)分配了足夠的棧與堆空間,但是我在的使用malloc分配內(nèi)存時(shí),一直分配不成功,這是什么原因?
    發(fā)表于 04-27 06:45

    光伏電站運(yùn)維系統(tǒng)讓太陽(yáng)發(fā)電更高效

    ?????? 光伏電站運(yùn)維系統(tǒng)讓太陽(yáng)發(fā)電更高效 ?????? 光伏電站運(yùn)維系統(tǒng)是一套幫助管理太陽(yáng)發(fā)電站的技術(shù)工具,它的作用是讓電站運(yùn)行更穩(wěn)定、發(fā)電更高效,同時(shí)減少人工維護(hù)的成本和麻
    的頭像 發(fā)表于 03-28 16:22 ?385次閱讀
    光伏電站運(yùn)維系統(tǒng)讓太陽(yáng)<b class='flag-5'>能</b>發(fā)電更<b class='flag-5'>高效</b>

    stm32h7s78 rcc pll2時(shí)鐘使失敗的原因

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

    直擊 MBR2054:低正向壓降如何成就高效電路,應(yīng)用實(shí)例解讀#

    高效電路
    杰克船長(zhǎng)6262
    發(fā)布于 :2025年02月22日 14:23:54

    儲(chǔ)新風(fēng)口 儲(chǔ)控制單元助力高效能量管理

    技術(shù)支持18701998775 在 “雙碳” 目標(biāo)背景下,儲(chǔ)能行業(yè)正迎來(lái)發(fā)展機(jī)遇,成為能源領(lǐng)域的焦點(diǎn)。然而,隨著儲(chǔ)市場(chǎng)的快速擴(kuò)張,一系列痛點(diǎn)也逐漸浮現(xiàn),如何實(shí)現(xiàn)高效、安全、經(jīng)濟(jì)的儲(chǔ)系統(tǒng)管理,成為
    的頭像 發(fā)表于 02-14 15:09 ?904次閱讀
    儲(chǔ)<b class='flag-5'>能</b>新風(fēng)口 儲(chǔ)<b class='flag-5'>能</b>控制單元助力<b class='flag-5'>高效</b>能量管理

    基于STM32設(shè)計(jì)的大氣氣壓檢測(cè)裝置

    本項(xiàng)目計(jì)劃基于STM32微控制器平臺(tái)來(lái)實(shí)現(xiàn)一個(gè)緊湊且高效的大氣氣壓檢測(cè)系統(tǒng)。選擇STM32作為主控芯片的原因在于其擁有強(qiáng)大的處理能力、豐富的外設(shè)接口以及良好的低功耗特性,非常適合用來(lái)構(gòu)
    的頭像 發(fā)表于 01-09 11:15 ?1311次閱讀
    基于<b class='flag-5'>STM32</b>設(shè)計(jì)的大氣氣壓檢測(cè)裝置

    電容儲(chǔ)焊接技術(shù)的先進(jìn)控制器:實(shí)現(xiàn)高效精密焊接的新突破

    隨著工業(yè)4.0時(shí)代的到來(lái),制造業(yè)對(duì)焊接技術(shù)的需求日益精細(xì)且高效,而電容儲(chǔ)焊接技術(shù)憑借其獨(dú)特優(yōu)勢(shì),在眾多焊接方法中脫穎而出,尤其是配備先進(jìn)控制器的電容儲(chǔ)焊接系統(tǒng),更是實(shí)現(xiàn)了高效精密焊
    的頭像 發(fā)表于 12-06 09:06 ?588次閱讀

    STM32H503開(kāi)發(fā)(2)----STM32CubeProgrammer燒錄

    STM32CubeProgrammer (STM32CubeProg) 是一款用于編程STM32產(chǎn)品的全功能多操作系統(tǒng)軟件工具。 它提供了一個(gè)易用高效的環(huán)境,通過(guò)調(diào)試接口(JTAG和
    的頭像 發(fā)表于 11-28 09:25 ?2548次閱讀
    <b class='flag-5'>STM32</b>H503開(kāi)發(fā)(2)----<b class='flag-5'>STM32</b>CubeProgrammer燒錄

    高效儲(chǔ)PCS的選擇指南

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

    儲(chǔ)線束:面向儲(chǔ)系統(tǒng)的高效能電池連接技術(shù)

    儲(chǔ)線束是儲(chǔ)系統(tǒng)中不可或缺的連接組件,承擔(dān)著傳輸電能的關(guān)鍵角色。為了確保整個(gè)儲(chǔ)系統(tǒng)的順暢運(yùn)行,數(shù)據(jù)和信號(hào)的傳輸以及電力供應(yīng)都依賴于這些線束的高效連接。
    的頭像 發(fā)表于 09-05 14:57 ?1090次閱讀

    太陽(yáng)逆變器報(bào)警是什么原因

    的常見(jiàn)原因 直流輸入電壓異常 (1)直流輸入電壓過(guò)高:當(dāng)太陽(yáng)電池板的輸出電壓超過(guò)逆變器的額定輸入電壓時(shí),逆變器會(huì)發(fā)出過(guò)壓報(bào)警。這可能是由于太陽(yáng)電池板的配置不合理,或者逆變器的額定輸入電壓過(guò)低造成的。 解決方法
    的頭像 發(fā)表于 08-15 10:44 ?3218次閱讀

    萬(wàn)斷路器合不上閘的原因

    以下是萬(wàn)斷路器合不上閘的原因的主要內(nèi)容: 萬(wàn)斷路器的基本原理和功能 萬(wàn)斷路器是一種用于保護(hù)電力系統(tǒng)的設(shè)備,可以自動(dòng)切斷故障電路,以防止設(shè)備損壞和事故的發(fā)生。 萬(wàn)
    的頭像 發(fā)表于 07-31 15:21 ?3660次閱讀