STM32LL库系列教程(一)—— LL库概览及资料
項目地址:
github : https://github.com/liliang1918/STM32LL
碼云 :https://gitee.com/liang1918/stm32_ll_library
系列教程目錄
STM32LL庫系列教程(一)—— LL庫概覽及資料
STM32LL庫系列教程(二)——點亮LED燈
STM32LL庫系列教程(三)——串口中斷
STM32LL庫系列教程(四)——外部中斷
STM32LL庫系列教程(五)——定時器中斷
(這個系列暑假期間正在完善,所以有的鏈接打不開是因為文章還是草稿狀態,見諒!)
文章目錄
- 系列教程目錄
- 1. LL庫應用場景
- 2. LL庫官方介紹
- 3. LL庫資料
- 4. LL庫的性能優勢
- 5. LL庫的使用方法
1. LL庫應用場景
用過STM32的朋友,對于標準庫 STD庫(Standard Peripheral Libraries)和HAL庫(Hardware Abstraction Layer)應該都不會陌生。事實上,ST在推行HAL庫的時候,逐漸停止了對于標準庫的更新(新出的芯片以及不再提供標準庫了),但他們也意識到了HAL庫效率較低的問題,因此同時也推出了LL( Low-layer )庫。
所以,當我們針對一些低性能(M0)或者低功耗(L系列)的芯片編程時。相較于HAL庫的低效率,寄存器操作的復雜,標準庫的逐漸淘汰。LL庫就成為了替代HAL庫一個比較好的選擇了。
2. LL庫官方介紹
為了準確介紹LL庫的大致內容,筆者從HAL&LL F1的官方手冊(Description of STM32F1 HAL and Low-layer drivers)中截取部分內容并附上翻譯
低層驅動程序概述低層(LL)驅動程序旨在提供快速的輕量級面向專家的層,該層比HAL更接近硬件。與HAL相反,對于優化訪問權限不是關鍵功能的外圍設備,或需要大量軟件配置和/或復雜上層堆棧(例如FSMC,USB或SDMMC)的外圍設備,則不提供LL API。
LL驅動程序功能: ·
- 一組函數,用于根據數據結構中指定的參數初始化外圍主要功能
- 一組函數,用于用每個字段的重置值填充初始化數據結構
- 執行外圍設備反初始化的功能(外圍設備寄存器恢復為默認值)
- 一組內聯函數,用于直接和原子寄存器訪問
- 由于LL驅動程序可以在獨立模式下(無HAL驅動程序)或在混合模式下(有HAL驅動程序)使用,因此與HAL完全獨立
- 全面介紹了支持的外圍功能。
低層驅動程序根據STM32外設的可用功能提供硬件服務。這些服務恰好反映了硬件功能,并提供了一次操作,必須遵循微控制器產品線參考手冊中描述的編程模型進行調用。結果,LL服務不執行任何處理,并且不需要任何其他內存資源來保存其狀態,計數器或數據指針:所有操作都是通過更改關聯的外設寄存器的內容來執行的。
LL庫的手冊翻譯,我會再出一篇博客。以上為簡單介紹3. LL庫資料
LL庫的手冊基本是放在HAL庫手冊中的,作為HAL庫的一個補充。筆者已經找到了STM32各系列型號對應的HAL&LL庫的官方手冊。鏈接如下:
鏈接:https://pan.baidu.com/s/1PuUF4x780O-ZDjvqK_Z5gg 提取碼:ldqd4. LL庫的性能優勢
上圖轉載自
STM32使用HAL庫、標準庫、LL庫和寄存器操作的性能對比_u014519486的博客-CSDN博客_hal庫 寄存器
https://blog.csdn.net/u014519486/article/details/102800532
可見,相較于HAL庫而言,LL庫的效率是有極大提升的。這一點,在使用LL庫編譯代碼時,就可以明顯感覺到速度的提升
5. LL庫的使用方法
與HAL庫相同,LL庫同樣支持CUBEMX生成代碼,非常方便。并且,在cubemx工程中,不同外設是可以混合使用HAL和LL庫的,兩者完全兼容,所以適配上是不存在問題的。
總結
以上是生活随笔為你收集整理的STM32LL库系列教程(一)—— LL库概览及资料的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 破解elasticsearch(制作破解
- 下一篇: ipguard网络控制策略详解