Просмотр исходного кода

Allow STM32 pins to specify timers (#17805)

Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
J.C. Nelson 5 лет назад
Родитель
Сommit
b4aebbe78d
Аккаунт пользователя с таким Email не найден

+ 42
- 2
Marlin/src/HAL/STM32/timers.cpp Просмотреть файл

@@ -21,21 +21,61 @@
21 21
  */
22 22
 #if defined(ARDUINO_ARCH_STM32) && !defined(STM32GENERIC)
23 23
 
24
-#include "HAL.h"
25
-
26 24
 #include "timers.h"
27 25
 
26
+#include "../../inc/MarlinConfig.h"
27
+
28 28
 // ------------------------
29 29
 // Local defines
30 30
 // ------------------------
31 31
 
32 32
 #define NUM_HARDWARE_TIMERS 2
33 33
 
34
+#ifndef SWSERIAL_TIMER_IRQ_PRIO
35
+  #define SWSERIAL_TIMER_IRQ_PRIO 1
36
+#endif
37
+#ifndef STEP_TIMER_IRQ_PRIO
38
+  #define STEP_TIMER_IRQ_PRIO 2
39
+#endif
40
+#ifndef TEMP_TIMER_IRQ_PRIO
41
+  #define TEMP_TIMER_IRQ_PRIO 14   // 14 = after hardware ISRs
42
+#endif
43
+
44
+#ifdef STM32F0xx
45
+  #define HAL_TIMER_RATE (F_CPU)      // Frequency of timer peripherals
46
+  #define MCU_STEP_TIMER 16
47
+  #define MCU_TEMP_TIMER 17
48
+#elif defined(STM32F1xx)
49
+  #define HAL_TIMER_RATE (F_CPU)
50
+  #define MCU_STEP_TIMER  4
51
+  #define MCU_TEMP_TIMER  2
52
+#elif defined(STM32F401xC) || defined(STM32F401xE)
53
+  #define HAL_TIMER_RATE (F_CPU / 2)
54
+  #define MCU_STEP_TIMER  9
55
+  #define MCU_TEMP_TIMER 10
56
+#elif defined(STM32F4xx) || defined(STM32F7xx)
57
+  #define HAL_TIMER_RATE (F_CPU / 2)
58
+  #define MCU_STEP_TIMER  6           // STM32F401 has no TIM6, TIM7, or TIM8
59
+  #define MCU_TEMP_TIMER 14           // TIM7 is consumed by Software Serial if used.
60
+#endif
61
+
62
+#ifndef STEP_TIMER
63
+  #define STEP_TIMER MCU_STEP_TIMER
64
+#endif
65
+#ifndef TEMP_TIMER
66
+  #define TEMP_TIMER MCU_TEMP_TIMER
67
+#endif
68
+
34 69
 #define __TIMER_DEV(X) TIM##X
35 70
 #define _TIMER_DEV(X) __TIMER_DEV(X)
36 71
 #define STEP_TIMER_DEV _TIMER_DEV(STEP_TIMER)
37 72
 #define TEMP_TIMER_DEV _TIMER_DEV(TEMP_TIMER)
38 73
 
74
+#define __TIMER_IRQ_NAME(X) TIM##X##_IRQn
75
+#define _TIMER_IRQ_NAME(X) __TIMER_IRQ_NAME(X)
76
+#define STEP_TIMER_IRQ_NAME _TIMER_IRQ_NAME(STEP_TIMER)
77
+#define TEMP_TIMER_IRQ_NAME _TIMER_IRQ_NAME(TEMP_TIMER)
78
+
39 79
 // ------------------------
40 80
 // Private Variables
41 81
 // ------------------------

+ 0
- 80
Marlin/src/HAL/STM32/timers.h Просмотреть файл

@@ -33,80 +33,6 @@
33 33
 #define hal_timer_t uint32_t
34 34
 #define HAL_TIMER_TYPE_MAX 0xFFFFFFFF // Timers can be 16 or 32 bit
35 35
 
36
-#ifdef STM32F0xx
37
-
38
-  #define HAL_TIMER_RATE (F_CPU) // frequency of timer peripherals
39
-
40
-  #ifndef STEP_TIMER
41
-    #define STEP_TIMER 16
42
-  #endif
43
-
44
-  #ifndef TEMP_TIMER
45
-    #define TEMP_TIMER 17
46
-  #endif
47
-
48
-#elif defined(STM32F1xx)
49
-
50
-  #define HAL_TIMER_RATE (F_CPU) // frequency of timer peripherals
51
-
52
-  #ifndef STEP_TIMER
53
-    #define STEP_TIMER 4
54
-  #endif
55
-
56
-  #ifndef TEMP_TIMER
57
-    #define TEMP_TIMER 2
58
-  #endif
59
-
60
-#elif defined(STM32F401xC) || defined(STM32F401xE)
61
-
62
-  #define HAL_TIMER_RATE (F_CPU / 2) // frequency of timer peripherals
63
-
64
-  #ifndef STEP_TIMER
65
-    #define STEP_TIMER 9
66
-  #endif
67
-
68
-  #ifndef TEMP_TIMER
69
-    #define TEMP_TIMER 10
70
-  #endif
71
-
72
-#elif defined(STM32F4xx)
73
-
74
-  #define HAL_TIMER_RATE (F_CPU / 2) // frequency of timer peripherals
75
-
76
-  #ifndef STEP_TIMER
77
-    #define STEP_TIMER 6  // STM32F401 has no TIM6, TIM7, or TIM8
78
-  #endif
79
-
80
-  #ifndef TEMP_TIMER
81
-    #define TEMP_TIMER 14 // TIM7 is consumed by Software Serial if used.
82
-  #endif
83
-
84
-#elif defined(STM32F7xx)
85
-
86
-  #define HAL_TIMER_RATE (F_CPU / 2) // frequency of timer peripherals
87
-
88
-  #ifndef STEP_TIMER
89
-    #define STEP_TIMER 6  // the RIGHT timer!
90
-  #endif
91
-
92
-  #ifndef TEMP_TIMER
93
-    #define TEMP_TIMER 14
94
-  #endif
95
-
96
-#endif
97
-
98
-#ifndef SWSERIAL_TIMER_IRQ_PRIO
99
-  #define SWSERIAL_TIMER_IRQ_PRIO 1
100
-#endif
101
-
102
-#ifndef STEP_TIMER_IRQ_PRIO
103
-  #define STEP_TIMER_IRQ_PRIO 2
104
-#endif
105
-
106
-#ifndef TEMP_TIMER_IRQ_PRIO
107
-  #define TEMP_TIMER_IRQ_PRIO 14   // 14 = after hardware ISRs
108
-#endif
109
-
110 36
 #define STEP_TIMER_NUM 0  // index of timer to use for stepper
111 37
 #define TEMP_TIMER_NUM 1  // index of timer to use for temperature
112 38
 #define PULSE_TIMER_NUM STEP_TIMER_NUM
@@ -122,12 +48,6 @@
122 48
 #define PULSE_TIMER_PRESCALE STEPPER_TIMER_PRESCALE
123 49
 #define PULSE_TIMER_TICKS_PER_US STEPPER_TIMER_TICKS_PER_US
124 50
 
125
-#define __TIMER_IRQ_NAME(X) TIM##X##_IRQn
126
-#define _TIMER_IRQ_NAME(X) __TIMER_IRQ_NAME(X)
127
-
128
-#define STEP_TIMER_IRQ_NAME _TIMER_IRQ_NAME(STEP_TIMER)
129
-#define TEMP_TIMER_IRQ_NAME _TIMER_IRQ_NAME(TEMP_TIMER)
130
-
131 51
 #define ENABLE_STEPPER_DRIVER_INTERRUPT() HAL_timer_enable_interrupt(STEP_TIMER_NUM)
132 52
 #define DISABLE_STEPPER_DRIVER_INTERRUPT() HAL_timer_disable_interrupt(STEP_TIMER_NUM)
133 53
 #define STEPPER_ISR_ENABLED() HAL_timer_interrupt_enabled(STEP_TIMER_NUM)

+ 0
- 2
Marlin/src/pins/stm32f0/pins_MALYAN_M300.h Просмотреть файл

@@ -43,8 +43,6 @@
43 43
 //
44 44
 // Timers
45 45
 //
46
-#undef STEP_TIMER
47
-#undef TEMP_TIMER
48 46
 #define STEP_TIMER 6
49 47
 #define TEMP_TIMER 7
50 48
 

+ 0
- 2
Marlin/src/pins/stm32f1/pins_MALYAN_M200.h Просмотреть файл

@@ -42,8 +42,6 @@
42 42
 // On STM32F103:
43 43
 // PB3, PB6, PB7, and PB8 can be used with pwm, which rules out TIM2 and TIM4.
44 44
 // On STM32F070, 16 and 17 are in use, but 1 and 3 are available.
45
-#undef STEP_TIMER
46
-#undef TEMP_TIMER
47 45
 #define STEP_TIMER 1
48 46
 #define TEMP_TIMER 3
49 47
 

Загрузка…
Отмена
Сохранить