forked from mirrors/qmk_firmware
add wait_cpuclock() macro for AVR and CPU_CLOCK macro (#12755)
This commit is contained in:
parent
c4dbf4bf01
commit
c9c60d227e
2 changed files with 8 additions and 5 deletions
|
@ -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)
|
||||
|
|
|
@ -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…
Reference in a new issue