Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix STM32 + SoftwareSerial compile (BTT002) #17831

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 1 addition & 9 deletions Marlin/src/HAL/STM32/HAL.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -27,10 +27,6 @@
#include "../../inc/MarlinConfig.h"
#include "../shared/Delay.h"

#if HAS_TMC_SW_SERIAL
#include "SoftwareSerial.h"
#endif

#if ENABLED(SRAM_EEPROM_EMULATION)
#if STM32F7xx
#include <stm32f7xx_ll_pwr.h>
Expand Down Expand Up @@ -82,11 +78,7 @@ void HAL_init() {
while (!LL_PWR_IsActiveFlag_BRR()); // Wait until backup regulator is initialized
#endif

#if HAS_TMC_SW_SERIAL
SoftwareSerial::setInterruptPriority(SWSERIAL_TIMER_IRQ_PRIO, 0);
#endif

TERN_(HAS_TMC_SW_SERIAL, SoftwareSerial::setInterruptPriority(SWSERIAL_TIMER_IRQ_PRIO, 0));
SetSoftwareSerialTimerInterruptPriority();
}

void HAL_clear_reset_source() { __HAL_RCC_CLEAR_RESET_FLAGS(); }
Expand Down
14 changes: 11 additions & 3 deletions Marlin/src/HAL/STM32/timers.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -31,16 +31,20 @@

#define NUM_HARDWARE_TIMERS 2

#ifndef SWSERIAL_TIMER_IRQ_PRIO
#define SWSERIAL_TIMER_IRQ_PRIO 1
#endif
#ifndef STEP_TIMER_IRQ_PRIO
#define STEP_TIMER_IRQ_PRIO 2
#endif
#ifndef TEMP_TIMER_IRQ_PRIO
#define TEMP_TIMER_IRQ_PRIO 14 // 14 = after hardware ISRs
#endif

#if HAS_TMC_SW_SERIAL
#include <SoftwareSerial.h>
thinkyhead marked this conversation as resolved.
Show resolved Hide resolved
#ifndef SWSERIAL_TIMER_IRQ_PRIO
#define SWSERIAL_TIMER_IRQ_PRIO 1
#endif
#endif

#ifdef STM32F0xx
#define HAL_TIMER_RATE (F_CPU) // Frequency of timer peripherals
#define MCU_STEP_TIMER 16
Expand Down Expand Up @@ -175,4 +179,8 @@ TIM_TypeDef * HAL_timer_device(const uint8_t timer_num) {
return nullptr;
}

void SetSoftwareSerialTimerInterruptPriority() {
TERN_(HAS_TMC_SW_SERIAL, SoftwareSerial::setInterruptPriority(SWSERIAL_TIMER_IRQ_PRIO, 0));
}

#endif // ARDUINO_ARCH_STM32 && !STM32GENERIC
3 changes: 3 additions & 0 deletions Marlin/src/HAL/STM32/timers.h
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,9 @@ void HAL_timer_enable_interrupt(const uint8_t timer_num);
void HAL_timer_disable_interrupt(const uint8_t timer_num);
bool HAL_timer_interrupt_enabled(const uint8_t timer_num);

// Exposed here to allow all timer priority information to reside in timers.cpp
void SetSoftwareSerialTimerInterruptPriority();

//TIM_TypeDef* HAL_timer_device(const uint8_t timer_num); no need to be public for now. not public = not used externally

// FORCE_INLINE because these are used in performance-critical situations
Expand Down
4 changes: 3 additions & 1 deletion buildroot/share/tests/BIGTREE_BTT002-tests
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,9 @@ set -e
restore_configs
opt_set MOTHERBOARD BOARD_BTT_BTT002_V1_0
opt_set SERIAL_PORT 1
exec_test $1 $2 "BigTreeTech BTT002 Default Configuration"
opt_set X_DRIVER_TYPE TMC2209
opt_set Y_DRIVER_TYPE TMC2130
exec_test $1 $2 "BigTreeTech BTT002 Default Configuration plus TMC steppers"

# clean up
restore_configs
4 changes: 3 additions & 1 deletion buildroot/share/tests/BIGTREE_SKR_PRO-tests
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,9 @@ opt_set TEMP_SENSOR_2 1
opt_set E0_AUTO_FAN_PIN PC10
opt_set E1_AUTO_FAN_PIN PC11
opt_set E2_AUTO_FAN_PIN PC12
exec_test $1 $2 "BigTreeTech SKR Pro 3 Extruders with Auto-Fan"
opt_set X_DRIVER_TYPE TMC2209
opt_set Y_DRIVER_TYPE TMC2130
exec_test $1 $2 "BigTreeTech SKR Pro 3 Extruders with Auto-Fan and mixed TMC drivers"

# clean up
restore_configs
3 changes: 2 additions & 1 deletion platformio.ini
Original file line number Diff line number Diff line change
Expand Up @@ -769,9 +769,10 @@ build_flags = ${common.build_flags}
-DHAVE_HWSERIAL3
-DPIN_SERIAL2_RX=PD_6
-DPIN_SERIAL2_TX=PD_5
-IMarlin/src/HAL/STM32
thinkyhead marked this conversation as resolved.
Show resolved Hide resolved
build_unflags = -std=gnu++11
extra_scripts = pre:buildroot/share/PlatformIO/scripts/generic_create_variant.py
lib_ignore = Adafruit NeoPixel, SailfishLCD, SlowSoftI2CMaster
lib_ignore = Adafruit NeoPixel, SailfishLCD, SlowSoftI2CMaster, SoftwareSerial
src_filter = ${common.default_src_filter} +<src/HAL/STM32>

#
Expand Down