Skip to main content
Gudgel.boB
Senior
November 5, 2019
Question

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

  • November 5, 2019
  • 4 replies
  • 1397 views

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

This topic has been closed for replies.

4 replies

Senior III
November 5, 2019

Hi !

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

Gudgel.boB
Senior
November 5, 2019

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

Tesla DeLorean
Guru
November 5, 2019

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

#LoungeLizard

Tips, Buy me a coffee, or three.. PayPal VenmoUp vote any posts that you find helpful, it shows what's working..
Piranha
Principal III
November 5, 2019

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.

Gudgel.boB
Senior
November 5, 2019

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" =)