Browse Source

Allow STM32 pins to specify timers (#17805)

Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
J.C. Nelson 5 years ago
parent
commit
b4aebbe78d
No account linked to committer's email address

+ 42
- 2
Marlin/src/HAL/STM32/timers.cpp View File

21
  */
21
  */
22
 #if defined(ARDUINO_ARCH_STM32) && !defined(STM32GENERIC)
22
 #if defined(ARDUINO_ARCH_STM32) && !defined(STM32GENERIC)
23
 
23
 
24
-#include "HAL.h"
25
-
26
 #include "timers.h"
24
 #include "timers.h"
27
 
25
 
26
+#include "../../inc/MarlinConfig.h"
27
+
28
 // ------------------------
28
 // ------------------------
29
 // Local defines
29
 // Local defines
30
 // ------------------------
30
 // ------------------------
31
 
31
 
32
 #define NUM_HARDWARE_TIMERS 2
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
 #define __TIMER_DEV(X) TIM##X
69
 #define __TIMER_DEV(X) TIM##X
35
 #define _TIMER_DEV(X) __TIMER_DEV(X)
70
 #define _TIMER_DEV(X) __TIMER_DEV(X)
36
 #define STEP_TIMER_DEV _TIMER_DEV(STEP_TIMER)
71
 #define STEP_TIMER_DEV _TIMER_DEV(STEP_TIMER)
37
 #define TEMP_TIMER_DEV _TIMER_DEV(TEMP_TIMER)
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
 // Private Variables
80
 // Private Variables
41
 // ------------------------
81
 // ------------------------

+ 0
- 80
Marlin/src/HAL/STM32/timers.h View File

33
 #define hal_timer_t uint32_t
33
 #define hal_timer_t uint32_t
34
 #define HAL_TIMER_TYPE_MAX 0xFFFFFFFF // Timers can be 16 or 32 bit
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
 #define STEP_TIMER_NUM 0  // index of timer to use for stepper
36
 #define STEP_TIMER_NUM 0  // index of timer to use for stepper
111
 #define TEMP_TIMER_NUM 1  // index of timer to use for temperature
37
 #define TEMP_TIMER_NUM 1  // index of timer to use for temperature
112
 #define PULSE_TIMER_NUM STEP_TIMER_NUM
38
 #define PULSE_TIMER_NUM STEP_TIMER_NUM
122
 #define PULSE_TIMER_PRESCALE STEPPER_TIMER_PRESCALE
48
 #define PULSE_TIMER_PRESCALE STEPPER_TIMER_PRESCALE
123
 #define PULSE_TIMER_TICKS_PER_US STEPPER_TIMER_TICKS_PER_US
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
 #define ENABLE_STEPPER_DRIVER_INTERRUPT() HAL_timer_enable_interrupt(STEP_TIMER_NUM)
51
 #define ENABLE_STEPPER_DRIVER_INTERRUPT() HAL_timer_enable_interrupt(STEP_TIMER_NUM)
132
 #define DISABLE_STEPPER_DRIVER_INTERRUPT() HAL_timer_disable_interrupt(STEP_TIMER_NUM)
52
 #define DISABLE_STEPPER_DRIVER_INTERRUPT() HAL_timer_disable_interrupt(STEP_TIMER_NUM)
133
 #define STEPPER_ISR_ENABLED() HAL_timer_interrupt_enabled(STEP_TIMER_NUM)
53
 #define STEPPER_ISR_ENABLED() HAL_timer_interrupt_enabled(STEP_TIMER_NUM)

+ 0
- 2
Marlin/src/pins/stm32f0/pins_MALYAN_M300.h View File

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

+ 0
- 2
Marlin/src/pins/stm32f1/pins_MALYAN_M200.h View File

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

Loading…
Cancel
Save