cancel
Showing results for 
Search instead for 
Did you mean: 

LL_Init, LL_FLASH_SetLatency, LL_ADC_RESOLUTION_12B... What does "LL" mean ?

Gudgel.boB
Senior

This is one question where Google is obviously not going to work... Can't seem to find out what "LL" means.

Low Level maybe ? I see that LT means Lib Tool but no idea on this one.

Thanks, boB

5 REPLIES 5
Kraal
Senior III

Hi !

You are correct, LL stands for Low Level. It is in opposition to the HAL (Hardware Abstraction Layer) librairies.

Gudgel.boB
Senior

Thank you Kraal.

I JUST now found the document "Description of STM32F4 HAL and LL drivers" that mentioned this... 'Low Layer' deal

"The Low Layer APIs (LL) offering a fast light-weight expert-oriented layer which is closer to the hardware than the HAL'

I don't care for this syntax. The definitions are long enough already and I did just fine without them for my STM32F4xx project in the low level context.

It's "almost" as bad as the HAL language. I suppose I could just do a global removal of "LL_" but that might cause other issues.

This newer part I am finding this for is the STM32F30x parts. Maybe the LL is just for function names because I notice that LL_ is not

used for register names maybe so much. That part is good at least. I wonder why ST did not add LL_ to all of those names too ?

Just seems to me to be a waste of effort and make things more difficult for most users that won't be changing processor platforms all the time and having to use the HAL syntax. Sometimes I think that good old intel mnemonics and 8080 assembler was a better time for computing 🙂

OK, Done ranting

Thank you !

boB

Piranha
Chief II

This is an answer to your questions:

https://www.st.com/content/ccc/resource/sales_and_marketing/presentation/product_presentation/37/55/ff/bc/a8/71/4f/c5/stm32_embedded_software_offering.pdf/files/stm32_embedded_software_offering.pdf/jcr:content/translations/en.stm32_embedded_software_offering.pdf

Register definitions are hardware description. LL and HAL are libraries which you can use or (better) not use. Thought HAL is full of bugs, bloated and inflexible. LL is mostly one line functions, which doubles the learning and remembering amount because you have to learn register names and LL names. The best overall approach for serious projects is to use register definitions and write your own higher level libraries.

Zilog's were a lot more popular, but the M68K was far​ better constructed.

#LoungeLizard

Tips, Buy me a coffee, or three.. PayPal Venmo
Up vote any posts that you find helpful, it shows what's working..
Gudgel.boB
Senior

Thanks guys...

I agree with you all ! I use the MXcube for initialization and everything else I use the even lower level (without the "LL_") method.

#LoungeLizard, yep ! I did use the Z80 on my home built CP/M machine many years ago. I still liked the intel mnemonics such as MOV rather than Zilog's LD though.

When the micro market was changing back in the 1980s we referred to the intel assembly as "good old intel mnemonics" =)