Browse Source

Wrap delay macros in do{}while(0)

Scott Lahteine 7 years ago
parent
commit
7b6e742436
1 changed files with 16 additions and 16 deletions
  1. 16
    16
      Marlin/src/core/macros.h

+ 16
- 16
Marlin/src/core/macros.h View File

53
 // Highly granular delays for step pulses, etc.
53
 // Highly granular delays for step pulses, etc.
54
 #define DELAY_0_NOP NOOP
54
 #define DELAY_0_NOP NOOP
55
 #define DELAY_1_NOP __asm__("nop\n\t")
55
 #define DELAY_1_NOP __asm__("nop\n\t")
56
-#define DELAY_2_NOP DELAY_1_NOP; DELAY_1_NOP
57
-#define DELAY_3_NOP DELAY_1_NOP; DELAY_2_NOP
58
-#define DELAY_4_NOP DELAY_1_NOP; DELAY_3_NOP
59
-#define DELAY_5_NOP DELAY_1_NOP; DELAY_4_NOP
56
+#define DELAY_2_NOP do{ DELAY_1_NOP; DELAY_1_NOP; }while(0)
57
+#define DELAY_3_NOP do{ DELAY_1_NOP; DELAY_2_NOP; }while(0)
58
+#define DELAY_4_NOP do{ DELAY_1_NOP; DELAY_3_NOP; }while(0)
59
+#define DELAY_5_NOP do{ DELAY_1_NOP; DELAY_4_NOP; }while(0)
60
 
60
 
61
 #define DELAY_NOPS(X) \
61
 #define DELAY_NOPS(X) \
62
   switch (X) { \
62
   switch (X) { \
72
     case 2:  DELAY_1_NOP; case 1:  DELAY_1_NOP; \
72
     case 2:  DELAY_1_NOP; case 1:  DELAY_1_NOP; \
73
   }
73
   }
74
 
74
 
75
-#define DELAY_10_NOP DELAY_5_NOP;  DELAY_5_NOP
76
-#define DELAY_20_NOP DELAY_10_NOP; DELAY_10_NOP
75
+#define DELAY_10_NOP do{ DELAY_5_NOP;  DELAY_5_NOP;  }while(0)
76
+#define DELAY_20_NOP do{ DELAY_10_NOP; DELAY_10_NOP; }while(0)
77
 
77
 
78
 #if CYCLES_PER_MICROSECOND == 16
78
 #if CYCLES_PER_MICROSECOND == 16
79
-  #define DELAY_1US DELAY_10_NOP; DELAY_5_NOP; DELAY_1_NOP
79
+  #define DELAY_1US do { DELAY_10_NOP; DELAY_5_NOP; DELAY_1_NOP; }while(0)
80
 #else
80
 #else
81
   #define DELAY_1US DELAY_20_NOP
81
   #define DELAY_1US DELAY_20_NOP
82
 #endif
82
 #endif
83
-#define DELAY_2US  DELAY_1US; DELAY_1US
84
-#define DELAY_3US  DELAY_1US; DELAY_2US
85
-#define DELAY_4US  DELAY_1US; DELAY_3US
86
-#define DELAY_5US  DELAY_1US; DELAY_4US
87
-#define DELAY_6US  DELAY_1US; DELAY_5US
88
-#define DELAY_7US  DELAY_1US; DELAY_6US
89
-#define DELAY_8US  DELAY_1US; DELAY_7US
90
-#define DELAY_9US  DELAY_1US; DELAY_8US
91
-#define DELAY_10US DELAY_1US; DELAY_9US
83
+#define DELAY_2US  do{ DELAY_1US; DELAY_1US; }while(0)
84
+#define DELAY_3US  do{ DELAY_1US; DELAY_2US; }while(0)
85
+#define DELAY_4US  do{ DELAY_1US; DELAY_3US; }while(0)
86
+#define DELAY_5US  do{ DELAY_1US; DELAY_4US; }while(0)
87
+#define DELAY_6US  do{ DELAY_1US; DELAY_5US; }while(0)
88
+#define DELAY_7US  do{ DELAY_1US; DELAY_6US; }while(0)
89
+#define DELAY_8US  do{ DELAY_1US; DELAY_7US; }while(0)
90
+#define DELAY_9US  do{ DELAY_1US; DELAY_8US; }while(0)
91
+#define DELAY_10US do{ DELAY_1US; DELAY_9US; }while(0)
92
 
92
 
93
 // Remove compiler warning on an unused variable
93
 // Remove compiler warning on an unused variable
94
 #define UNUSED(x) (void) (x)
94
 #define UNUSED(x) (void) (x)

Loading…
Cancel
Save