Browse Source

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

pull/14144/head
Takeshi ISHII 2 years ago
committed by GitHub
parent
commit
c9c60d227e
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 8 additions and 5 deletions
  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 View File

@ -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 View File

@ -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)

Loading…
Cancel
Save