ARM - Refactor SLEEP_LED to support more platforms (#8403)
* Initial refactor of ARM SLEEP_LED to enable more platforms * fix build issues * Disable SLEEP_LED for boards with no caps lock code * Enable GPT14 for boards with caps lock code and SLEEP_LED enabled * Enable GPT for boards with caps lock code and SLEEP_LED enabled
This commit is contained in:
parent
a3cbc8a004
commit
415a8bc249
|
@ -74,3 +74,5 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
#define BACKLIGHT_LEVELS 6
|
#define BACKLIGHT_LEVELS 6
|
||||||
#define BACKLIGHT_BREATHING
|
#define BACKLIGHT_BREATHING
|
||||||
#define BREATHING_PERIOD 6
|
#define BREATHING_PERIOD 6
|
||||||
|
|
||||||
|
#define SLEEP_LED_GPT_DRIVER GPTD1
|
||||||
|
|
|
@ -27,5 +27,7 @@
|
||||||
|
|
||||||
#define HAL_USE_SPI TRUE
|
#define HAL_USE_SPI TRUE
|
||||||
|
|
||||||
|
#define HAL_USE_GPT TRUE
|
||||||
|
|
||||||
#include_next <halconf.h>
|
#include_next <halconf.h>
|
||||||
|
|
||||||
|
|
|
@ -32,3 +32,5 @@
|
||||||
#undef STM32_SPI_USE_SPI2
|
#undef STM32_SPI_USE_SPI2
|
||||||
#define STM32_SPI_USE_SPI2 TRUE
|
#define STM32_SPI_USE_SPI2 TRUE
|
||||||
|
|
||||||
|
#undef STM32_GPT_USE_TIM1
|
||||||
|
#define STM32_GPT_USE_TIM1 TRUE
|
||||||
|
|
|
@ -11,7 +11,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
|
||||||
EXTRAKEY_ENABLE = yes # Audio control and System control
|
EXTRAKEY_ENABLE = yes # Audio control and System control
|
||||||
CONSOLE_ENABLE = yes # Console for debug
|
CONSOLE_ENABLE = yes # Console for debug
|
||||||
COMMAND_ENABLE = yes # Commands for debug and configuration
|
COMMAND_ENABLE = yes # Commands for debug and configuration
|
||||||
SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
|
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||||
NKRO_ENABLE = yes # USB Nkey Rollover
|
NKRO_ENABLE = yes # USB Nkey Rollover
|
||||||
CUSTOM_MATRIX = no # Custom matrix file
|
CUSTOM_MATRIX = no # Custom matrix file
|
||||||
BACKLIGHT_ENABLE = yes
|
BACKLIGHT_ENABLE = yes
|
||||||
|
|
|
@ -11,7 +11,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
|
||||||
EXTRAKEY_ENABLE = yes # Audio control and System control
|
EXTRAKEY_ENABLE = yes # Audio control and System control
|
||||||
CONSOLE_ENABLE = yes # Console for debug
|
CONSOLE_ENABLE = yes # Console for debug
|
||||||
COMMAND_ENABLE = yes # Commands for debug and configuration
|
COMMAND_ENABLE = yes # Commands for debug and configuration
|
||||||
SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
|
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||||
NKRO_ENABLE = yes # USB Nkey Rollover
|
NKRO_ENABLE = yes # USB Nkey Rollover
|
||||||
CUSTOM_MATRIX = no # Custom matrix file
|
CUSTOM_MATRIX = no # Custom matrix file
|
||||||
BACKLIGHT_ENABLE = yes
|
BACKLIGHT_ENABLE = yes
|
||||||
|
|
|
@ -10,7 +10,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
|
||||||
EXTRAKEY_ENABLE = yes # Audio control and System control
|
EXTRAKEY_ENABLE = yes # Audio control and System control
|
||||||
CONSOLE_ENABLE = yes # Console for debug
|
CONSOLE_ENABLE = yes # Console for debug
|
||||||
COMMAND_ENABLE = yes # Commands for debug and configuration
|
COMMAND_ENABLE = yes # Commands for debug and configuration
|
||||||
SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
|
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||||
NKRO_ENABLE = yes # USB Nkey Rollover
|
NKRO_ENABLE = yes # USB Nkey Rollover
|
||||||
CUSTOM_MATRIX = no # Custom matrix file
|
CUSTOM_MATRIX = no # Custom matrix file
|
||||||
BACKLIGHT_ENABLE = yes
|
BACKLIGHT_ENABLE = yes
|
||||||
|
|
|
@ -9,7 +9,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
|
||||||
EXTRAKEY_ENABLE = yes # Audio control and System control
|
EXTRAKEY_ENABLE = yes # Audio control and System control
|
||||||
CONSOLE_ENABLE = yes # Console for debug
|
CONSOLE_ENABLE = yes # Console for debug
|
||||||
COMMAND_ENABLE = yes # Commands for debug and configuration
|
COMMAND_ENABLE = yes # Commands for debug and configuration
|
||||||
SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
|
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||||
NKRO_ENABLE = yes # USB Nkey Rollover
|
NKRO_ENABLE = yes # USB Nkey Rollover
|
||||||
CUSTOM_MATRIX = no # Custom matrix file
|
CUSTOM_MATRIX = no # Custom matrix file
|
||||||
BACKLIGHT_ENABLE = yes
|
BACKLIGHT_ENABLE = yes
|
||||||
|
|
|
@ -15,7 +15,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
|
||||||
EXTRAKEY_ENABLE = yes # Audio control and System control
|
EXTRAKEY_ENABLE = yes # Audio control and System control
|
||||||
CONSOLE_ENABLE = yes # Console for debug
|
CONSOLE_ENABLE = yes # Console for debug
|
||||||
COMMAND_ENABLE = yes # Commands for debug and configuration
|
COMMAND_ENABLE = yes # Commands for debug and configuration
|
||||||
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||||
NKRO_ENABLE = yes # USB Nkey Rollover
|
NKRO_ENABLE = yes # USB Nkey Rollover
|
||||||
CUSTOM_MATRIX = no # Custom matrix file
|
CUSTOM_MATRIX = no # Custom matrix file
|
||||||
ENCODER_ENABLE = yes
|
ENCODER_ENABLE = yes
|
||||||
|
|
|
@ -11,7 +11,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
|
||||||
EXTRAKEY_ENABLE = yes # Audio control and System control
|
EXTRAKEY_ENABLE = yes # Audio control and System control
|
||||||
CONSOLE_ENABLE = yes # Console for debug
|
CONSOLE_ENABLE = yes # Console for debug
|
||||||
COMMAND_ENABLE = yes # Commands for debug and configuration
|
COMMAND_ENABLE = yes # Commands for debug and configuration
|
||||||
SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
|
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||||
NKRO_ENABLE = yes # USB Nkey Rollover
|
NKRO_ENABLE = yes # USB Nkey Rollover
|
||||||
CUSTOM_MATRIX = no # Custom matrix file
|
CUSTOM_MATRIX = no # Custom matrix file
|
||||||
BACKLIGHT_ENABLE = yes
|
BACKLIGHT_ENABLE = yes
|
||||||
|
|
|
@ -11,7 +11,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
|
||||||
EXTRAKEY_ENABLE = yes # Audio control and System control
|
EXTRAKEY_ENABLE = yes # Audio control and System control
|
||||||
CONSOLE_ENABLE = yes # Console for debug
|
CONSOLE_ENABLE = yes # Console for debug
|
||||||
COMMAND_ENABLE = yes # Commands for debug and configuration
|
COMMAND_ENABLE = yes # Commands for debug and configuration
|
||||||
SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
|
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||||
NKRO_ENABLE = yes # USB Nkey Rollover
|
NKRO_ENABLE = yes # USB Nkey Rollover
|
||||||
CUSTOM_MATRIX = no # Custom matrix file
|
CUSTOM_MATRIX = no # Custom matrix file
|
||||||
BACKLIGHT_ENABLE = yes
|
BACKLIGHT_ENABLE = yes
|
||||||
|
|
|
@ -10,7 +10,7 @@ EXTRAKEY_ENABLE = yes # Audio control and System control
|
||||||
CONSOLE_ENABLE = yes # Console for debug
|
CONSOLE_ENABLE = yes # Console for debug
|
||||||
COMMAND_ENABLE = yes # Commands for debug and configuration
|
COMMAND_ENABLE = yes # Commands for debug and configuration
|
||||||
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||||
SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
|
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||||
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||||
NKRO_ENABLE = yes # USB Nkey Rollover
|
NKRO_ENABLE = yes # USB Nkey Rollover
|
||||||
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
|
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
|
||||||
|
|
|
@ -11,7 +11,7 @@ EXTRAKEY_ENABLE = yes # Audio control and System control
|
||||||
CONSOLE_ENABLE = no # Console for debug
|
CONSOLE_ENABLE = no # Console for debug
|
||||||
COMMAND_ENABLE = no # Commands for debug and configuration
|
COMMAND_ENABLE = no # Commands for debug and configuration
|
||||||
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||||
SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
|
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||||
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||||
NKRO_ENABLE = yes # USB Nkey Rollover
|
NKRO_ENABLE = yes # USB Nkey Rollover
|
||||||
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
|
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
|
||||||
|
|
|
@ -10,7 +10,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
|
||||||
EXTRAKEY_ENABLE = yes # Audio control and System control
|
EXTRAKEY_ENABLE = yes # Audio control and System control
|
||||||
CONSOLE_ENABLE = yes # Console for debug
|
CONSOLE_ENABLE = yes # Console for debug
|
||||||
COMMAND_ENABLE = yes # Commands for debug and configuration
|
COMMAND_ENABLE = yes # Commands for debug and configuration
|
||||||
SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
|
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||||
NKRO_ENABLE = yes # USB Nkey Rollover
|
NKRO_ENABLE = yes # USB Nkey Rollover
|
||||||
CUSTOM_MATRIX = no # Custom matrix file
|
CUSTOM_MATRIX = no # Custom matrix file
|
||||||
|
|
||||||
|
|
|
@ -7,9 +7,9 @@ EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
|
||||||
CONSOLE_ENABLE = yes # Console for debug(+400)
|
CONSOLE_ENABLE = yes # Console for debug(+400)
|
||||||
COMMAND_ENABLE = no # Commands for debug and configuration
|
COMMAND_ENABLE = no # Commands for debug and configuration
|
||||||
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||||
SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
|
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||||
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||||
NKRO_ENABLE = yes # USB Nkey Rollover
|
NKRO_ENABLE = yes # USB Nkey Rollover
|
||||||
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
|
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
|
||||||
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
|
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
|
||||||
MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
|
MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#define SLEEP_LED_GPT_DRIVER GPTD1
|
|
@ -27,5 +27,7 @@
|
||||||
|
|
||||||
#define HAL_USE_SPI TRUE
|
#define HAL_USE_SPI TRUE
|
||||||
|
|
||||||
|
#define HAL_USE_GPT TRUE
|
||||||
|
|
||||||
#include_next <halconf.h>
|
#include_next <halconf.h>
|
||||||
|
|
||||||
|
|
|
@ -32,3 +32,5 @@
|
||||||
#undef STM32_SPI_USE_SPI2
|
#undef STM32_SPI_USE_SPI2
|
||||||
#define STM32_SPI_USE_SPI2 TRUE
|
#define STM32_SPI_USE_SPI2 TRUE
|
||||||
|
|
||||||
|
#undef STM32_GPT_USE_TIM1
|
||||||
|
#define STM32_GPT_USE_TIM1 TRUE
|
||||||
|
|
|
@ -9,7 +9,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
|
||||||
EXTRAKEY_ENABLE = yes # Audio control and System control
|
EXTRAKEY_ENABLE = yes # Audio control and System control
|
||||||
CONSOLE_ENABLE = yes # Console for debug
|
CONSOLE_ENABLE = yes # Console for debug
|
||||||
COMMAND_ENABLE = yes # Commands for debug and configuration
|
COMMAND_ENABLE = yes # Commands for debug and configuration
|
||||||
SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
|
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||||
NKRO_ENABLE = yes # USB Nkey Rollover
|
NKRO_ENABLE = yes # USB Nkey Rollover
|
||||||
BACKLIGHT_ENABLE = no
|
BACKLIGHT_ENABLE = no
|
||||||
|
|
||||||
|
|
|
@ -46,6 +46,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
#define RGBLED_NUM 24
|
#define RGBLED_NUM 24
|
||||||
#define RGBLIGHT_ANIMATIONS
|
#define RGBLIGHT_ANIMATIONS
|
||||||
|
|
||||||
|
#define SLEEP_LED_GPT_DRIVER GPTD1
|
||||||
|
|
||||||
/* define if matrix has ghost */
|
/* define if matrix has ghost */
|
||||||
//#define MATRIX_HAS_GHOST
|
//#define MATRIX_HAS_GHOST
|
||||||
|
|
||||||
|
|
|
@ -23,5 +23,7 @@
|
||||||
|
|
||||||
#define HAL_USE_PWM TRUE
|
#define HAL_USE_PWM TRUE
|
||||||
|
|
||||||
|
#define HAL_USE_GPT TRUE
|
||||||
|
|
||||||
#include_next <halconf.h>
|
#include_next <halconf.h>
|
||||||
|
|
||||||
|
|
|
@ -35,3 +35,5 @@
|
||||||
#undef STM32_SPI_USE_SPI2
|
#undef STM32_SPI_USE_SPI2
|
||||||
#define STM32_SPI_USE_SPI2 TRUE
|
#define STM32_SPI_USE_SPI2 TRUE
|
||||||
|
|
||||||
|
#undef STM32_GPT_USE_TIM1
|
||||||
|
#define STM32_GPT_USE_TIM1 TRUE
|
||||||
|
|
|
@ -30,3 +30,5 @@
|
||||||
#define LOCKING_SUPPORT_ENABLE
|
#define LOCKING_SUPPORT_ENABLE
|
||||||
/* Locking resynchronize hack */
|
/* Locking resynchronize hack */
|
||||||
#define LOCKING_RESYNC_ENABLE
|
#define LOCKING_RESYNC_ENABLE
|
||||||
|
|
||||||
|
#define SLEEP_LED_GPT_DRIVER GPTD1
|
||||||
|
|
|
@ -0,0 +1,27 @@
|
||||||
|
/* Copyright 2020 QMK
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This file was auto-generated by:
|
||||||
|
* `qmk chibios-confmigrate -i keyboards/projectkb/alice/halconf.h -r platforms/chibios/common/configs/halconf.h`
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#define HAL_USE_GPT TRUE
|
||||||
|
|
||||||
|
#include_next <halconf.h>
|
||||||
|
|
|
@ -23,6 +23,5 @@
|
||||||
|
|
||||||
#include_next <mcuconf.h>
|
#include_next <mcuconf.h>
|
||||||
|
|
||||||
#undef STM32_PWM_USE_TIM3
|
#undef STM32_GPT_USE_TIM1
|
||||||
#define STM32_PWM_USE_TIM3 TRUE
|
#define STM32_GPT_USE_TIM1 TRUE
|
||||||
|
|
||||||
|
|
|
@ -9,21 +9,13 @@
|
||||||
* Use LP timer on Kinetises, TIM14 on STM32F0.
|
* Use LP timer on Kinetises, TIM14 on STM32F0.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#if defined(KL2x) || defined(K20x)
|
#ifndef SLEEP_LED_GPT_DRIVER
|
||||||
|
# if defined(STM32F0XX)
|
||||||
/* Use Low Power Timer (LPTMR) */
|
# define SLEEP_LED_GPT_DRIVER GPTD14
|
||||||
# define TIMER_INTERRUPT_VECTOR KINETIS_LPTMR0_IRQ_VECTOR
|
# endif
|
||||||
# define RESET_COUNTER LPTMR0->CSR |= LPTMRx_CSR_TCF
|
|
||||||
|
|
||||||
#elif defined(STM32F0XX)
|
|
||||||
|
|
||||||
/* Use TIM14 manually */
|
|
||||||
# define TIMER_INTERRUPT_VECTOR STM32_TIM14_HANDLER
|
|
||||||
# define RESET_COUNTER STM32_TIM14->SR &= ~STM32_TIM_SR_UIF
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(KL2x) || defined(K20x) || defined(STM32F0XX) /* common parts for timers/interrupts */
|
#if defined(KL2x) || defined(K20x) || defined(SLEEP_LED_GPT_DRIVER) /* common parts for timers/interrupts */
|
||||||
|
|
||||||
/* Breathing Sleep LED brighness(PWM On period) table
|
/* Breathing Sleep LED brighness(PWM On period) table
|
||||||
* (64[steps] * 4[duration]) / 64[PWM periods/s] = 4 second breath cycle
|
* (64[steps] * 4[duration]) / 64[PWM periods/s] = 4 second breath cycle
|
||||||
|
@ -33,10 +25,7 @@
|
||||||
*/
|
*/
|
||||||
static const uint8_t breathing_table[64] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 4, 6, 10, 15, 23, 32, 44, 58, 74, 93, 113, 135, 157, 179, 199, 218, 233, 245, 252, 255, 252, 245, 233, 218, 199, 179, 157, 135, 113, 93, 74, 58, 44, 32, 23, 15, 10, 6, 4, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
|
static const uint8_t breathing_table[64] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 4, 6, 10, 15, 23, 32, 44, 58, 74, 93, 113, 135, 157, 179, 199, 218, 233, 245, 252, 255, 252, 245, 233, 218, 199, 179, 157, 135, 113, 93, 74, 58, 44, 32, 23, 15, 10, 6, 4, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
|
||||||
|
|
||||||
/* interrupt handler */
|
void sleep_led_timer_callback(void) {
|
||||||
OSAL_IRQ_HANDLER(TIMER_INTERRUPT_VECTOR) {
|
|
||||||
OSAL_IRQ_PROLOGUE();
|
|
||||||
|
|
||||||
/* Software PWM
|
/* Software PWM
|
||||||
* timer:1111 1111 1111 1111
|
* timer:1111 1111 1111 1111
|
||||||
* \_____/\/ \_______/____ count(0-255)
|
* \_____/\/ \_______/____ count(0-255)
|
||||||
|
@ -64,17 +53,16 @@ OSAL_IRQ_HANDLER(TIMER_INTERRUPT_VECTOR) {
|
||||||
if (timer.pwm.count == breathing_table[timer.pwm.index]) {
|
if (timer.pwm.count == breathing_table[timer.pwm.index]) {
|
||||||
led_set(0);
|
led_set(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Reset the counter */
|
|
||||||
RESET_COUNTER;
|
|
||||||
|
|
||||||
OSAL_IRQ_EPILOGUE();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* common parts for known platforms */
|
#endif /* common parts for known platforms */
|
||||||
|
|
||||||
#if defined(KL2x) || defined(K20x) /* platform selection: familiar Kinetis chips */
|
#if defined(KL2x) || defined(K20x) /* platform selection: familiar Kinetis chips */
|
||||||
|
|
||||||
|
/* Use Low Power Timer (LPTMR) */
|
||||||
|
# define TIMER_INTERRUPT_VECTOR KINETIS_LPTMR0_IRQ_VECTOR
|
||||||
|
# define RESET_COUNTER LPTMR0->CSR |= LPTMRx_CSR_TCF
|
||||||
|
|
||||||
/* LPTMR clock options */
|
/* LPTMR clock options */
|
||||||
# define LPTMR_CLOCK_MCGIRCLK 0 /* 4MHz clock */
|
# define LPTMR_CLOCK_MCGIRCLK 0 /* 4MHz clock */
|
||||||
# define LPTMR_CLOCK_LPO 1 /* 1kHz clock */
|
# define LPTMR_CLOCK_LPO 1 /* 1kHz clock */
|
||||||
|
@ -86,6 +74,18 @@ OSAL_IRQ_HANDLER(TIMER_INTERRUPT_VECTOR) {
|
||||||
# define SIM_SCGC5_LPTMR SIM_SCGC5_LPTIMER
|
# define SIM_SCGC5_LPTMR SIM_SCGC5_LPTIMER
|
||||||
# endif
|
# endif
|
||||||
|
|
||||||
|
/* interrupt handler */
|
||||||
|
OSAL_IRQ_HANDLER(TIMER_INTERRUPT_VECTOR) {
|
||||||
|
OSAL_IRQ_PROLOGUE();
|
||||||
|
|
||||||
|
sleep_led_timer_callback();
|
||||||
|
|
||||||
|
/* Reset the counter */
|
||||||
|
RESET_COUNTER;
|
||||||
|
|
||||||
|
OSAL_IRQ_EPILOGUE();
|
||||||
|
}
|
||||||
|
|
||||||
/* Initialise the timer */
|
/* Initialise the timer */
|
||||||
void sleep_led_init(void) {
|
void sleep_led_init(void) {
|
||||||
/* Make sure the clock to the LPTMR is enabled */
|
/* Make sure the clock to the LPTMR is enabled */
|
||||||
|
@ -159,45 +159,23 @@ void sleep_led_toggle(void) {
|
||||||
LPTMR0->CSR ^= LPTMRx_CSR_TEN;
|
LPTMR0->CSR ^= LPTMRx_CSR_TEN;
|
||||||
}
|
}
|
||||||
|
|
||||||
#elif defined(STM32F0XX) /* platform selection: STM32F0XX */
|
#elif defined(SLEEP_LED_GPT_DRIVER)
|
||||||
|
|
||||||
|
static void gptTimerCallback(GPTDriver *gptp) {
|
||||||
|
(void)gptp;
|
||||||
|
sleep_led_timer_callback();
|
||||||
|
}
|
||||||
|
|
||||||
|
static const GPTConfig gptcfg = {1000000, gptTimerCallback, 0, 0};
|
||||||
|
|
||||||
/* Initialise the timer */
|
/* Initialise the timer */
|
||||||
void sleep_led_init(void) {
|
void sleep_led_init(void) { gptStart(&SLEEP_LED_GPT_DRIVER, &gptcfg); }
|
||||||
/* enable clock */
|
|
||||||
rccEnableTIM14(FALSE); /* low power enable = FALSE */
|
|
||||||
rccResetTIM14();
|
|
||||||
|
|
||||||
/* prescale */
|
void sleep_led_enable(void) { gptStartContinuous(&SLEEP_LED_GPT_DRIVER, gptcfg.frequency / 0xFFFF); }
|
||||||
/* Assuming 48MHz internal clock */
|
|
||||||
/* getting cca 65484 irqs/sec */
|
|
||||||
STM32_TIM14->PSC = 733;
|
|
||||||
|
|
||||||
/* auto-reload */
|
void sleep_led_disable(void) { gptStopTimer(&SLEEP_LED_GPT_DRIVER); }
|
||||||
/* 0 => interrupt every time */
|
|
||||||
STM32_TIM14->ARR = 3;
|
|
||||||
|
|
||||||
/* enable counter update event interrupt */
|
void sleep_led_toggle(void) { (SLEEP_LED_GPT_DRIVER.state == GPT_READY) ? sleep_led_enable() : sleep_led_disable(); }
|
||||||
STM32_TIM14->DIER |= STM32_TIM_DIER_UIE;
|
|
||||||
|
|
||||||
/* register interrupt vector */
|
|
||||||
nvicEnableVector(STM32_TIM14_NUMBER, 2); /* vector, priority */
|
|
||||||
}
|
|
||||||
|
|
||||||
void sleep_led_enable(void) {
|
|
||||||
/* Enable the timer */
|
|
||||||
STM32_TIM14->CR1 = STM32_TIM_CR1_CEN | STM32_TIM_CR1_URS;
|
|
||||||
/* URS => update event only on overflow; setting UG bit disabled */
|
|
||||||
}
|
|
||||||
|
|
||||||
void sleep_led_disable(void) {
|
|
||||||
/* Disable the timer */
|
|
||||||
STM32_TIM14->CR1 = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
void sleep_led_toggle(void) {
|
|
||||||
/* Toggle the timer */
|
|
||||||
STM32_TIM14->CR1 ^= STM32_TIM_CR1_CEN;
|
|
||||||
}
|
|
||||||
|
|
||||||
#else /* platform selection: not on familiar chips */
|
#else /* platform selection: not on familiar chips */
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue