Browse Source

Fix access to the DWT peripheral for STM32 HAL (#12434)

Access to the DWT peripheral for the `CYCCNT` register needs to happen before `main()`. The code needs to be called after the setup of the system clocks, so the right place is between the `premain()` and `main()` function of the STM32 Arduino core.

This patch moves the DWT access code to a new function, which is then placed between `premain()` and `main()`.
pull/1/head
Nils Hasenbanck 6 years ago
committed by Scott Lahteine
parent
commit
5a4fd8e0a6
  1. 16
      Marlin/src/HAL/HAL_STM32/HAL.cpp

16
Marlin/src/HAL/HAL_STM32/HAL.cpp

@ -78,14 +78,20 @@ uint16_t HAL_adc_result;
// Public functions
// --------------------------------------------------------------------------
// HAL initialization task
void HAL_init(void) {
// Needed for DELAY_NS() / DELAY_US() on CORTEX-M7
#if (defined(__arm__) || defined(__thumb__)) && __CORTEX_M == 7
// Needed for DELAY_NS() / DELAY_US() on CORTEX-M7
#if (defined(__arm__) || defined(__thumb__)) && __CORTEX_M == 7
// HAL pre-initialization task
// Force the preinit function to run between the premain() and main() function
// of the STM32 arduino core
__attribute__((constructor (102)))
void HAL_preinit() {
enableCycleCounter();
#endif
}
#endif
// HAL initialization task
void HAL_init(void) {
FastIO_init();
#if ENABLED(SDSUPPORT)

Loading…
Cancel
Save