How to avoid HAL_Init() when using a timer other than Systick
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
‎2022-10-03 6:45 PM
Hello guys,
First of all I want to say that I don't like and don't use HAL library. Use LL_Library instead as long as possible.
Now what brings me here is that currently I am manually porting FreeRTOS to an STM32469NI MCU. This force me to use a different time base other than the Systick. I have realized that when using another timebase source ( example TIM1), STM32Cube MX autogenerated code always includes and initialize the HAL library in main
My question: is there a workaround to get rid of the HAL library in this case and work exclusively with LL?
Any help or suggestion would be greatly appreciated
Solved! Go to Solution.
Accepted Solutions
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
‎2022-10-04 12:57 AM
> I am manually porting FreeRTOS to an STM32469NI MCU
A bit late? ST already offers the FreeRTOS adapted for STM32F4 in their "Cube MCU" package and as a separate repo on their github.
> My question: is there a workaround to get rid of the HAL library in this case and work exclusively with LL?
Of course, yes. Throw away the generated code and roll your own. It's all available in source.
By the way some people here dislike LL as well, saying that it does not provide enough value compared to pure register accesses, and adds yet another layer of obscurity. Up to your taste.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
‎2022-10-04 12:57 AM
> I am manually porting FreeRTOS to an STM32469NI MCU
A bit late? ST already offers the FreeRTOS adapted for STM32F4 in their "Cube MCU" package and as a separate repo on their github.
> My question: is there a workaround to get rid of the HAL library in this case and work exclusively with LL?
Of course, yes. Throw away the generated code and roll your own. It's all available in source.
By the way some people here dislike LL as well, saying that it does not provide enough value compared to pure register accesses, and adds yet another layer of obscurity. Up to your taste.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
‎2022-10-04 1:13 AM
Hello migmel,
just to add, in the CubeMX->Project Manager->Advanced Settings tab you can choose which libraries you want to use. If you choose LL for all peripherals as well as TIM1, HAL won't be included
BR,
Jaroslav
To give better visibility on the answered topics, please click on Accept as Solution on the reply which solved your issue or answered your question.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
‎2022-10-04 1:52 AM
Right, that is how it is done. However, when you choose TIM1 as timebase source, then TIM1 option is not available to choose the library in advanced settings tab
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
‎2022-10-04 2:49 AM
Yeah, I can see it now, you are right. Sorry for the confusion. Still, you can rewrite it as Pavel A. suggested...
To give better visibility on the answered topics, please click on Accept as Solution on the reply which solved your issue or answered your question.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
‎2022-10-04 2:52 AM
Yes, It looks that way.
Thank you
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
‎2022-10-04 7:06 PM
FreeRTOS is already ported to all Cortex-M cores for the popular compilers. What are you porting there? Just take it and use it!
And why SysTick timer cannot be used for system ticks?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
‎2022-10-04 9:31 PM
Probably it was not clear. I talked about FreeRTOS just to give a context but its actually irrelevant.
The question was about CubeIDE and how to make it generate pure LL code.
I know CMSIS FreeRTOS is already ported to most of MCUs and is available. Yes, I have taken it, but out of my curiosity I want to do it specially because native FreeRTOS is not provided with Cube.
About the Systick, is a high recommendation from STMCube to use a different timebase source
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
‎2022-10-05 6:19 AM
> I know CMSIS FreeRTOS is already ported to most of MCUs and is available.
FreeRTOS is ported by it's developers to Cortex-M4 CPU core and it doesn't need any porting to specific MCUs. Now, you are actually talking about CMSIS-RTOS wrapper for it, which you didn't mention initially.
> native FreeRTOS is not provided with Cube
The fact that CubeMX adds CMSIS-RTOS wrapper doesn't forbid using FreeRTOS native API. So you don't use HAL because you want to write your own code, but you still need CubeMX. For what? For adding a useless RTOS wrapper that just adds another layer of bloat and limits the possibilities?
> About the Systick, is a high recommendation from STMCube to use a different timebase source
"When RTOS is used, it is strongly recommended to use a HAL timebase source other than the Systick. The HAL timebase source can be changed from the Pinout tab under SYS"
Did you even read what it says? It recommends using other timer for HAL timebase, not for FreeRTOS. They do this because their flawed HAL junk uses timeouts in functions, which can be called from ISRs. Because of that HAL timebase interrupt must be set to the highest priority, but FreeRTOS's tick interrupt must not be higher than configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY and is recommended to be set to the lowest priority. If one doesn't use HAL junk, then all of that idiocracy is not relevant.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
‎2022-10-05 6:15 PM
I don't use HAL because I don't like it. I'm just a learner not an expert, otherwise wouldn't be using CubeMX. Can't initialize all peripherals by heart using LL
Now I realize that using the Systick as usual works normal with FreeRTOS at least as long as no low power modes are used. Have to test what would happen if using low power modes
