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

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

    文章

    8742

    瀏覽量

    147775
  • STM32
    +關注

    關注

    2271

    文章

    10923

    瀏覽量

    357117
  • 代碼
    +關注

    關注

    30

    文章

    4823

    瀏覽量

    68904
收藏 人收藏

    評論

    相關推薦

    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的標準外設?,F在改用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包裝外形圖
    主站蜘蛛池模板: 亚洲高清无在码在线电影 | 久久性色AV亚洲电影无码 | 欧美亚洲综合另类无码 | 伊人角狠狠狠狠 | 午夜福利体验试看120秒 | 日本内射精品一区二区视频 | 国产传媒麻豆剧精品AV | 欧美午夜免费观看福利片 | 暖暖的视频完整视频免费韩国 | 中国少妇内射XXXX狠干 | 精品一区二区三区四区五区六区 | 亚洲 欧美 综合 高清 在线 | 男人的天堂久久精品激情a 男人的天堂黄色片 | 欧美精品久久久久性色AV苍井 | 无码人妻精品一区二区蜜桃色欲 | 久久国产伦子伦精品 | 国产精品一区二区AV白丝在线 | 伊人久在线观看视频 | 国产欧美日韩国产高清 | 女生扒开尿口 | 精品人妻伦一二三区久久AAA片 | 国产高清视频在线播放www色 | 二级毛片在线观看 | 亚洲日韩国产精品乱-久 | 欧美 亚洲 有码中文字幕 | 亚洲九九视频 | 国产囗交10p | 囚禁固定在调教椅上扩张H 秋霞最新高清无码鲁丝片 秋霞在线看片无码免费 | 久久99re2在线视频精品 | 无码不卡中文字幕在线观看 | 亚洲激情一区 | 伊人不卡久久大香线蕉综合影院 | 天天操天天干天天透 | 免费高清毛片 | 精品国产成人a区在线观看 精品国产成人AV在线看 | 国产精品v片在线观看不卡 国产精品v欧美精品v日韩 | 日日夜夜操操操 | 日本xxx护士与黑人 日本xxxx裸体xxxx | 久久国内精品 | 久久精品国产亚洲AV麻豆欧美玲 | 性欧美FREE少妇XXX |