[ell-i-developers] Possible Optimization in RCC Initialisation Registers

  • From: Ivan Raul <supra.material@xxxxxxxxx>
  • To: "ell-i-developers@xxxxxxxxxxxxx" <ell-i-developers@xxxxxxxxxxxxx>
  • Date: Wed, 17 Sep 2014 22:41:45 +0200

Dear All,

In concrete, we target 3 registers from RCC: GPIO_AHBENR, APB1ENR, and
APB2ENR

https://github.com/Ell-i/Runtime/blob/master/stm32/cores/arduelli/arduelli_gpio.h#L107
https://github.com/Ell-i/Runtime/blob/master/stm32/cores/arduelli/arduelli_usart.h#L71
https://github.com/Ell-i/Runtime/blob/master/stm32/cores/arduelli/arduelli_timer.h#L70

However, we generate a initialisation register for each enabled peripheral,
leading to 15 initialisation registers in the case of the stm32f334 (with
usart activated): 4 for gpio, 8 for timer, and 3 for usart, instead of only
3.

I propose to use a similar alternative to the one we use for the GPIOs,
where we generate the final state of the registers by collecting the
variables and ORing them:

https://github.com/Ell-i/Runtime/blob/master/stm32/cores/arduelli/arduelli_gpio.h#L154

I have one concrete question before proceeding: Is it necessary to activate
the peripherals one by one (for power stability, maybe)?, or, in other
words, is there any problem if all the peripherals required for each
register are activated at once?

With Warm Regards, Ivan Raul

Other related posts: