在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

3天內不再提示

SPL2LL轉換器實現標準庫代碼遷移為LL庫的方法與內容

電子工程師 ? 來源:嵌入式專欄 ? 作者:strongerHuang ? 2021-04-24 09:30 ? 次閱讀

早期開發STM32,大部分工程師都是基于標準庫進行開發,如果要換成LL庫,且需要復用以前代碼,該怎么辦呢?

下面就來給大家分享一下使用【SPL2LL轉換器】實現標準庫代碼遷移為LL庫的方法,以及相關內容。

1關于LL庫

LL庫,即STM32Cube Low-Layer,也叫Cube LL、Cube底層庫等。

開發STM32通常有四種“庫”,可以閱讀之前分享的文章進一步了解。

早在2014年,ST推出了STM32CubeMX這款工具,同步推出了對應的STM32Cube HAL庫。

但是,HAL存在一些問題:代碼量大、執行效率低等缺點。

因此,在2017年,ST推出了STM32Cube LL庫,目的就是為了解決的HAL庫的缺點,讓開發STM32的工程師有更多的選擇。

之前有工程師總結了的代碼性能:

6FrIny.jpeg

針對上圖(Flash、 SRAM 占用量和執行代碼的效率這三項指標對比測試)簡單講幾點:

1.ROM代碼和RAM占用量最小的屬于直接操作寄存器WED,對于ROM資源較小的芯片具有優勢;

2.執行效率最高的也屬于WED,但是代碼編輯、移植性和可讀寫都較差。(其實匯編語言比這還有優勢,一般沒有特殊要求,不建議使用該寄存器編程

3.三項指標中,除了WED之外,SPL和Cube LL相近(不相上下),也相比Cube HAL就有優勢。所以,SPL和Cube LL是四種之中最佳選擇的兩種。

4.SPL和Cube LL各有特點:SPL庫成熟,可讀性(特別針對初學者)很好,查找問題也方便;Cube LL可以使用STM32CubeMX圖形化工具直接生產初始化代碼和工程,在這方便也具有明顯優勢。

2為什么要用LL庫?

上面講述了關于LL庫,以及其他幾種庫的內容,你會發現,幾種庫開發STM32各有各的優勢。

1.對于RAM和Flash這種資源比較少的STM32,除了用標準外設庫之外,LL庫就是一個很好的選擇。

2.使用LL庫配置的代碼,相對自己參考寄存器手冊配置的代碼,LL庫API接口更規范,更具有移植性。

3.有些芯片,沒有標準外設庫,只有早期推出的STM32才有標準外設庫,包含F0、 F1、 F2、 F3、 F4、 L1:

M7BNZr.jpeg

新出來的(像F7、L4、G0等)這些芯片只能使用目前的HAL、LL庫,或者你自己參考手冊配置寄存器(不是特殊情況,我不建議自己配寄存器)。

3利用SPL2LL工具轉換代碼

SPL2LL,即標準外設庫轉LL庫的轉換器工具。

SPL2LL主要特點:

免費

顯示源代碼遷移狀態

生成C代碼,適用于IAR,Keil和GCC編譯器

支持Windows、Linux和MacOS操作系統

網址包含相關文檔和SPL2LL工具。

1.ActivePerl下載安裝 在使用SPL2LL工具之前,需要安裝【ActivePerl】這個工具,不然會提示錯誤:

Error : cannot find perl, please verify that you have perl (》5.24.1) installed and added to path

Then restart the application

YrIJNf.png

如果覺得下載麻煩,可以在我網盤:

https://pan.baidu.com/s/1_R21S93V9hzlJ8ZL1D4dKA

提取碼: cp37

(包含SPL2LL和ActivePerl工具)

2.安裝

SPL2LL工具不需要安裝,直接點開即可使用,但前提需要安裝【ActivePerl】工具。

【ActivePerl】安裝比較簡單,一路Next下去即可。

3YzqUz.png

aUBVna.png

ARBJ3m.png

QfIFZ3.png

3.使用SPL2LL

SPL2LL使用方法很簡單,選在源和目標的型號、路徑,然后執行即可。

IVza63.png

選擇好之后,點擊“Migrate”即可執行轉換。

AjMfuy.png

這里需要耐心等待,比較費時間,原理就是遍歷你源碼中標準庫,然后轉換成LL庫。

4.轉化代碼前后對比

RZz6Zr.png

你會發現,即使被屏蔽的代碼也進行了SPL轉LL。
編輯:lyn

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

    關注

    27

    文章

    8738

    瀏覽量

    147576
  • STM32
    +關注

    關注

    2270

    文章

    10915

    瀏覽量

    356788
  • 代碼
    +關注

    關注

    30

    文章

    4810

    瀏覽量

    68830
收藏 人收藏

    評論

    相關推薦

    KeyStone ll設備的硬件設計指南

    電子發燒友網站提供《KeyStone ll設備的硬件設計指南.pdf》資料免費下載
    發表于 10-12 14:27 ?0次下載
    KeyStone <b class='flag-5'>ll</b>設備的硬件設計指南

    STM32cubeMX 6.10.0使用LL生成定時模板報錯的原因?

    = LL_TIM_ETR_FILTER_FDIV1_N4 - LL_TIM_ETR_FILTER_FDIV1_N2;TIM_InitStruct.CounterMode
    發表于 05-20 07:50

    stm32f303采用LL,4個ADC連續多通道掃描,應該如何設置DMA?

    stm32f303,采用LL,4個ADC連續多通道掃描,應該如何設置DMA?ADC轉換完DMA傳輸后,中斷處理函數是哪個?
    發表于 04-30 07:06

    使用LL時在CUBEMX中設置了重映射,在生成的代碼中卻沒有重映射是為什么?

    我在使用LL時在CUBEMX中設置了重映射,但是在生成的代碼中卻沒有重映射,于是人工添加LL_GPIO_AF_RemapPartial_TIM3(); 然后防真但是走到這里就出現不能
    發表于 04-24 07:26

    STM32F0的SPL能在STM32G0上用嗎?

    原來用的STM32F0系列,使用的V3.5.0的標準外設。現在改用STM32G0系列,發現官網提供的固件是STM32CubeG0,里面是HAL和LL
    發表于 04-08 08:29

    使用LL生成STM32H7代碼時存在報錯是什么原因導致的?

    使用LL生成STM32H7代碼時存在的BUG
    發表于 04-03 07:33

    STM32L0 LLIIC發送不出我想要的數據是怎么回事?

    LL_I2C_HandleTransfer() 這個函數,則能發出來波形,但是這個函數會自動調整R/W位,所以不能在第一個字節使用。 使用這個方法未能實現我需要的功能。 方法二:利用手
    發表于 04-03 07:30

    用STM32Cube LL創建USART1,為什么接收管腳也被配置輸出模式呢?

    /GPIO_InitStruct.Pin = LL_GPIO_PIN_9;GPIO_InitStruct.Mode = LL_GPIO_MODE_ALTERNATE;GPIO_InitStruct.Speed
    發表于 04-01 06:31

    STM32F1的LL,RTC怎么不能設置日期?

    STM32F1的LL,RTC 怎么不能設置日期,只能設置時間。
    發表于 03-29 07:02

    請問HAL和LL分別在什么場合使用?

    請問HAL和LL分別在什么場合使用?LL簡單明了,為啥不是主流使用啊?還有為啥L03的例程中有較多的LL
    發表于 03-25 08:08

    stm32H750VB LL串口DMA空閑中斷接收不到數據的原因?怎么解決?

    = {0}; LL_RCC_SetUSARTClockSource(LL_RCC_USART16_CLKSOURCE_PCLK2); /* Peripheral clock enable
    發表于 03-21 07:47

    STM32L471RE同樣的硬件使用LL和HAL編譯的工程運行功耗不一樣?為什么?

    項目在使用STM32L471RE開發,涉及到低功耗的處理。在測試過程中發現同樣的硬件結構(PCB上僅焊接mcu的最小系統),使用LL和HAL生產的兩個工程運行功耗不一樣,工程配置時鐘
    發表于 03-21 06:17

    為什么STM32F103 LL清除某個標志位都是使用WRITE_REG(REG, VAL)呢?

    大佬們,最近看LL比較貼合寄存編程,但是LL清除某個標志位都是通過WRITE_REG(REG, VAL)這個來寫整個寄存
    發表于 03-18 06:10

    用cubemx配置時鐘生成LL的system clock函數,導致硬件仿真時main函數無法進入怎么解決?

    用cubemx配置時鐘會生成的LL的system clock函數會有 LL_FLASH_SetLatency(LL_FLASH_LATENCY_5),while
    發表于 03-07 06:40

    LL0032AA包裝外形圖

    電子發燒友網站提供《LL0032AA包裝外形圖.pdf》資料免費下載
    發表于 01-29 09:28 ?0次下載
    <b class='flag-5'>LL</b>0032AA包裝外形圖
    主站蜘蛛池模板: 四虎影视网址| 亚洲欧美在线精品一区二区| 色多多www网站| 亚洲精品欧洲久久婷婷99| 91网站在线播放| 美女脱裤子屁屁视频| 久久天天躁狠狠躁夜夜爽| 亚洲第一在线视频| 久久久久综合中文字幕| 激情爱爱的免费视频| 复古毛片| 国产欧美网站| 国产综合久久久久影院| 欧美精品国产第一区二区 | 手机看片1024日韩| 午夜免费毛片| 777777777妇女亚洲| 天天视频观看| 午夜寂寞在线一级观看免费| 成年人网站在线| 国产精品一区二区三区四区五区| 国产va在线播放| 天天透天天射| 操黄色| 一区三区三区不卡| 一级毛片西西人体44rt高清| 国产女人小便视频| 久久久久激情免费观看| 日韩精品一卡二卡三卡四卡2021| 一区二区三区四区视频| 曰本黄色一级| 日韩精品一区二区三区免费视频| 精品免费久久久久久成人影院| 免费在线播放黄色| 国产成年女一区二区三区| 奇米影视777欧美在线观看| 免费深夜视频| 黄色大片视频网站| 亚洲成a人片在线观看尤物| 四虎影院在线网址| 精品视频网站|