mirror of
				https://github.com/mfulz/qmk_firmware.git
				synced 2025-11-04 07:12:33 +01:00 
			
		
		
		
	add wait_cpuclock() macro for AVR and CPU_CLOCK macro (#12755)
This commit is contained in:
		
							parent
							
								
									c4dbf4bf01
								
							
						
					
					
						commit
						c9c60d227e
					
				@ -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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user