소스 검색

add wait_cpuclock() macro for AVR and CPU_CLOCK macro (#12755)

Takeshi ISHII 3 년 전
부모
커밋
c9c60d227e
2개의 변경된 파일8개의 추가작업 그리고 5개의 파일을 삭제
  1. 3 1
      tmk_core/common/avr/_wait.h
  2. 5 4
      tmk_core/common/chibios/_wait.h

+ 3 - 1
tmk_core/common/avr/_wait.h

@@ -37,6 +37,8 @@
             }                                   \
         }                                       \
     } while (0)
+#define wait_cpuclock(n) __builtin_avr_delay_cycles(n)
+#define CPU_CLOCK F_CPU
 
 /* The AVR series GPIOs have a one clock read delay for changes in the digital input signal.
  * But here's more margin to make it two clocks. */
@@ -44,4 +46,4 @@
 #    define GPIO_INPUT_PIN_DELAY 2
 #endif
 
-#define waitInputPinDelay() __builtin_avr_delay_cycles(GPIO_INPUT_PIN_DELAY)
+#define waitInputPinDelay() wait_cpuclock(GPIO_INPUT_PIN_DELAY)

+ 5 - 4
tmk_core/common/chibios/_wait.h

@@ -41,6 +41,10 @@ void wait_us(uint16_t duration);
         } while (0)
 #endif
 
+#include "_wait.c"
+
+#define CPU_CLOCK STM32_SYSCLK
+
 /* For GPIOs on ARM-based MCUs, the input pins are sampled by the clock of the bus
  * to which the GPIO is connected.
  * The connected buses differ depending on the various series of MCUs.
@@ -51,11 +55,8 @@ void wait_us(uint16_t duration);
  * If the GPIO_INPUT_PIN_DELAY macro is not defined, the following default values will be used.
  * (A fairly large value of 0.25 microseconds is set.)
  */
-
-#include "_wait.c"
-
 #ifndef GPIO_INPUT_PIN_DELAY
-#    define GPIO_INPUT_PIN_DELAY (STM32_SYSCLK / 1000000L / 4)
+#    define GPIO_INPUT_PIN_DELAY (CPU_CLOCK / 1000000L / 4)
 #endif
 
 #define waitInputPinDelay() wait_cpuclock(GPIO_INPUT_PIN_DELAY)