[PATCH] bsps/arm/stm32f4 Optimize get pin and change from HAL to LL
Cedric Berger
cedric at precidata.com
Thu Jul 7 08:32:50 UTC 2022
Hello,
On 07.07.22 09:35, Duc Doan wrote:
> Actually my project is focused on STM32F4, but it is nice that the code
> could be extensible to H7. However, I can't think of a good way to use
> that code with H7 right now; do you think that the code can be copied
> and pasted to H7 BSP? Or is there a better way to share the code among
> all STM32 BSPs?
I've a lot of experience with STM32 dev, but not with RTEMS, so I'm not
the best person to answer that question.
If you want to expand support for the H7 now, maybe Karel or someone
else on the list can point you to the right way.
What I can say by reading your "[PATCH 4/4]" file is that I don't see
what would not work for the H7. If it compiles on H7, it's likely to
work as is (except for the GPIO port lists, you'd need other ifdefs like
you do for STM32F429X, or maybe just keep
stm32f4_gpio_init/stm32f4_gpio_deinit separate for F4 and H7).
Maybe it's as simple as renaming the identifiers from stm32f4_gpio =>
stm32_gpio for clarity for most functions, and declaring these files in
the H7 scripts.
BTW: by rereading your "[PATCH 4/4]" file I noticed that there is
something else you need to be careful:
I don't know how the lifecycle of init/deinit is intended to work, but
the stm32f4_gpio_deinit() function is dangerous:
The problem is that if you disable the clock of, say, GPIOA, it will
also make all alternate function IPs that uses these pins stop working.
So if you are using the HAL for example for the Ethernet IP, the board
I'm working with will also call the following functions in it's
initialization routine:
HAL_ETH_MspInit()
{
...
__HAL_RCC_GPIOG_CLK_ENABLE();
__HAL_RCC_GPIOC_CLK_ENABLE();
__HAL_RCC_GPIOA_CLK_ENABLE();
...
}
So your "stm32f4_gpio_deinit" routine will make all IPs that share the
pins with the GPIO port also stop working.
The trivial fix is of course to make "stm32f4_gpio_deinit" do nothing.
Cedric
More information about the devel
mailing list