summaryrefslogtreecommitdiff
path: root/keyboards/bastardkb/charybdis/3x5
diff options
context:
space:
mode:
authorDrashna Jaelre <drashna@live.com>2022-11-29 11:43:42 -0800
committerGitHub <noreply@github.com>2022-11-29 11:43:42 -0800
commit4a87af0e9af046d5fc00d930476920c0c34a57a7 (patch)
treecb2da20c670a49b9fcada84822a7bdb2bd144d60 /keyboards/bastardkb/charybdis/3x5
parent8a8000b4ec379448848f561f57bbe2c781376357 (diff)
[Keymap] Drashna updates for 0.19 (#19175)
* Fix up bastardkb boards since blackpill support is officially added. * Check for blackpill version, not elite c. * Add checks in chibiOS config since multiple ARM controllers supported. * Rework rules.mk for keymaps to better handle arm vs avr support * Start moving away from `matrix_*_*` functions. * `housekeeping_task_*` instead of `matrix_scan_*` * `keyboard_(pre|post)_init_*` instead of `matrix_init_*` * Add ℂℴmⅈℂ unicode input method. * Clean up unicode code to be more compact and flexible. * Remove/move Pro Micro LED commands to userspace and better filter them * Fixup OLED code * Use newer quantum keycode functions/preprocessors rather than manual bit manipulation * Make unicode mode render much more compact/simple. * Make qmk secrets more self contained * Remove custom implementation of split watchdog
Diffstat (limited to 'keyboards/bastardkb/charybdis/3x5')
-rw-r--r--keyboards/bastardkb/charybdis/3x5/keymaps/drashna/config.h119
-rw-r--r--keyboards/bastardkb/charybdis/3x5/keymaps/drashna/halconf.h14
-rw-r--r--keyboards/bastardkb/charybdis/3x5/keymaps/drashna/keymap.c12
-rw-r--r--keyboards/bastardkb/charybdis/3x5/keymaps/drashna/mcuconf.h30
-rw-r--r--keyboards/bastardkb/charybdis/3x5/keymaps/drashna/rules.mk59
5 files changed, 131 insertions, 103 deletions
diff --git a/keyboards/bastardkb/charybdis/3x5/keymaps/drashna/config.h b/keyboards/bastardkb/charybdis/3x5/keymaps/drashna/config.h
index ad549a5e22..514a153623 100644
--- a/keyboards/bastardkb/charybdis/3x5/keymaps/drashna/config.h
+++ b/keyboards/bastardkb/charybdis/3x5/keymaps/drashna/config.h
@@ -18,87 +18,90 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-#undef PRODUCT
-#define PRODUCT "Charybdis Nano (Blackpill)"
-
-#undef MATRIX_ROW_PINS
-#define MATRIX_ROW_PINS \
- { B12, B13, B14, B15 }
-#undef MATRIX_COL_PINS
-#define MATRIX_COL_PINS \
- { A15, B3, B4, B5, B6 }
-
-
-#undef MATRIX_ROW_PINS_RIGHT
-#define MATRIX_ROW_PINS_RIGHT \
- { B12, B13, B14, B15 }
-#undef MATRIX_COL_PINS_RIGHT
-#define MATRIX_COL_PINS_RIGHT \
- { A15, B3, B4, B5, B6 }
-
-#define USB_VBUS_PIN B10
-#define SPLIT_HAND_PIN C14 // high = left, low = right
+#ifdef KEYBOARD_bastardkb_charybdis_3x5_blackpill
+
+# undef MATRIX_ROW_PINS
+# define MATRIX_ROW_PINS \
+ { B12, B13, B14, B15 }
+# undef MATRIX_COL_PINS
+# define MATRIX_COL_PINS \
+ { A15, B3, B4, B5, B6 }
+
+# undef MATRIX_ROW_PINS_RIGHT
+# define MATRIX_ROW_PINS_RIGHT \
+ { B12, B13, B14, B15 }
+# undef MATRIX_COL_PINS_RIGHT
+# define MATRIX_COL_PINS_RIGHT \
+ { A15, B3, B4, B5, B6 }
+
+# define USB_VBUS_PIN B10
+# undef SPLIT_HAND_PIN
+# define SPLIT_HAND_PIN C14 // high = left, low = right
// WS2812 RGB LED strip input and number of LEDs
-#undef RGB_DI_PIN
-#define RGB_DI_PIN A1
-#undef RGB_MATRIX_MAXIMUM_BRIGHTNESS
-#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150
-#define WS2812_PWM_DRIVER PWMD2 // default: PWMD2
-#define WS2812_PWM_CHANNEL 2 // default: 2
-#define WS2812_PWM_PAL_MODE 1 // Pin "alternate function", see the respective datasheet for the appropriate values for your MCU. default: 2
-#define WS2812_EXTERNAL_PULLUP
+# undef RGB_DI_PIN
+# define RGB_DI_PIN A1
+# undef RGB_MATRIX_MAXIMUM_BRIGHTNESS
+# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150
+# define WS2812_PWM_DRIVER PWMD2 // default: PWMD2
+# define WS2812_PWM_CHANNEL 2 // default: 2
+# define WS2812_PWM_PAL_MODE 1 // Pin "alternate function", see the respective datasheet for the appropriate values for your MCU. default: 2
+# define WS2812_EXTERNAL_PULLUP
//#define WS2812_PWM_COMPLEMENTARY_OUTPUT // Define for a complementary timer output (TIMx_CHyN); omit for a normal timer output (TIMx_CHy).
-#define WS2812_DMA_STREAM STM32_DMA1_STREAM7 // DMA Stream for TIMx_UP, see the respective reference manual for the appropriate values for your MCU.
-#define WS2812_DMA_CHANNEL 3 // DMA Channel for TIMx_UP, see the respective reference manual for the appropriate values for your MCU.
-#define WS2812_PWM_TARGET_PERIOD 800000
+# undef WS2812_DMA_STREAM
+# define WS2812_DMA_STREAM STM32_DMA1_STREAM7 // DMA Stream for TIMx_UP, see the respective reference manual for the appropriate values for your MCU.
+# define WS2812_DMA_CHANNEL 3 // DMA Channel for TIMx_UP, see the respective reference manual for the appropriate values for your MCU.
+# define WS2812_PWM_TARGET_PERIOD 800000
-#define DEBUG_LED_PIN C13
+# define DEBUG_LED_PIN C13
/* Audio config */
-#define AUDIO_PIN B1
-#define AUDIO_PWM_DRIVER PWMD3
-#define AUDIO_PWM_CHANNEL 4
-#define AUDIO_PWM_PAL_MODE 2
+# define AUDIO_PIN B1
+# define AUDIO_PWM_DRIVER PWMD3
+# define AUDIO_PWM_CHANNEL 4
+# define AUDIO_PWM_PAL_MODE 2
/* serial.c configuration for split keyboard */
-#undef SOFT_SERIAL_PIN
-#define SERIAL_USART_FULL_DUPLEX // Enable full duplex operation mode.
-#define SERIAL_USART_TX_PIN A2
-#define SERIAL_USART_RX_PIN A3
-#define SERIAL_USART_DRIVER SD2
-#define SERIAL_USART_TX_PAL_MODE 7 // Pin "alternate function", see the respective datasheet for the appropriate values for your MCU. default: 7
-#define SERIAL_USART_RX_PAL_MODE 7 // Pin "alternate function", see the respective datasheet for the appropriate values for your MCU. default: 7
-#define SERIAL_USART_TIMEOUT 100 // USART driver timeout. default 100
-#define SERIAL_USART_SPEED 921600
+# undef SOFT_SERIAL_PIN
+# define SERIAL_USART_FULL_DUPLEX // Enable full duplex operation mode.
+# undef SERIAL_USART_TX_PIN
+# define SERIAL_USART_TX_PIN A2
+# undef SERIAL_USART_RX_PIN
+# define SERIAL_USART_RX_PIN A3
+# define SERIAL_USART_DRIVER SD2
+# define SERIAL_USART_TX_PAL_MODE 7 // Pin "alternate function", see the respective datasheet for the appropriate values for your MCU. default: 7
+# define SERIAL_USART_RX_PAL_MODE 7 // Pin "alternate function", see the respective datasheet for the appropriate values for your MCU. default: 7
+# define SERIAL_USART_TIMEOUT 100 // USART driver timeout. default 100
+# define SERIAL_USART_SPEED 921600
// #define SERIAL_USART_PIN_SWAP // swap RX and TX pins on master
// To use the highest possible baudrate (3.75Mbit/s) uncomment the following
// line, this can result in dropped communications so lower the speed if there
// are many timeouts.
// #define SERIAL_USART_SPEED (STM32_PCLK2 >> 4)
-#define CRC8_USE_TABLE
-#define CRC8_OPTIMIZE_SPEED
+# define CRC8_USE_TABLE
+# define CRC8_OPTIMIZE_SPEED
/* spi config for eeprom and pmw3360 sensor */
-#define SPI_DRIVER SPID1
-#define SPI_SCK_PIN A5
-#define SPI_SCK_PAL_MODE 5
-#define SPI_MOSI_PIN A7
-#define SPI_MOSI_PAL_MODE 5
-#define SPI_MISO_PIN A6
-#define SPI_MISO_PAL_MODE 5
+# define SPI_DRIVER SPID1
+# define SPI_SCK_PIN A5
+# define SPI_SCK_PAL_MODE 5
+# define SPI_MOSI_PIN A7
+# define SPI_MOSI_PAL_MODE 5
+# define SPI_MISO_PIN A6
+# define SPI_MISO_PAL_MODE 5
/* eeprom config */
-#define EXTERNAL_EEPROM_SPI_SLAVE_SELECT_PIN A4
-#define EXTERNAL_EEPROM_SPI_CLOCK_DIVISOR 64
+# define EXTERNAL_EEPROM_SPI_SLAVE_SELECT_PIN A4
+# define EXTERNAL_EEPROM_SPI_CLOCK_DIVISOR 64
// #define EXTERNAL_EEPROM_BYTE_COUNT 8196
// #define EXTERNAL_EEPROM_PAGE_SIZE 32
// #define EXTERNAL_EEPROM_ADDRESS_SIZE 2
/* pmw3360 config */
-#undef PMW33XX_CS_PIN
-#define PMW33XX_CS_PIN B0
+# undef PMW33XX_CS_PIN
+# define PMW33XX_CS_PIN B0
+#endif
#define CHARYBDIS_MINIMUM_DEFAULT_DPI 1200
#define CHARYBDIS_DEFAULT_DPI_CONFIG_STEP 400
diff --git a/keyboards/bastardkb/charybdis/3x5/keymaps/drashna/halconf.h b/keyboards/bastardkb/charybdis/3x5/keymaps/drashna/halconf.h
index bc07c10527..3b254172b4 100644
--- a/keyboards/bastardkb/charybdis/3x5/keymaps/drashna/halconf.h
+++ b/keyboards/bastardkb/charybdis/3x5/keymaps/drashna/halconf.h
@@ -15,11 +15,13 @@
*/
#pragma once
-#define HAL_USE_PWM TRUE
-#define HAL_USE_SERIAL TRUE
-#define HAL_USE_I2C TRUE
-#define HAL_USE_SPI TRUE
-#define SPI_USE_WAIT TRUE
-#define SPI_SELECT_MODE SPI_SELECT_MODE_PAD
+#if defined(KEYBOARD_bastardkb_charybdis_3x5_blackpill)
+# define HAL_USE_PWM TRUE
+# define HAL_USE_SERIAL TRUE
+# define HAL_USE_I2C TRUE
+# define HAL_USE_SPI TRUE
+# define SPI_USE_WAIT TRUE
+# define SPI_SELECT_MODE SPI_SELECT_MODE_PAD
+#endif
#include_next <halconf.h>
diff --git a/keyboards/bastardkb/charybdis/3x5/keymaps/drashna/keymap.c b/keyboards/bastardkb/charybdis/3x5/keymaps/drashna/keymap.c
index a923a80b40..02cb89fe65 100644
--- a/keyboards/bastardkb/charybdis/3x5/keymaps/drashna/keymap.c
+++ b/keyboards/bastardkb/charybdis/3x5/keymaps/drashna/keymap.c
@@ -83,24 +83,28 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
};
-void matrix_init_keyemap(void) { setPinInputHigh(A0); }
+#if defined(KEYBOARD_bastardkb_charybdis_3x5_blackpill)
+void keyboard_pre_init_keymap(void) {
+ setPinInputHigh(A0);
+}
-void matrix_scan_keymap(void) {
+void housekeeping_task_keymap(void) {
if (!readPin(A0)) {
reset_keyboard();
}
}
-#ifdef USB_VBUS_PIN
+# ifdef USB_VBUS_PIN
bool usb_vbus_state(void) {
setPinInputLow(USB_VBUS_PIN);
wait_us(5);
return readPin(USB_VBUS_PIN);
}
-#endif
+# endif
void matrix_output_unselect_delay(uint8_t line, bool key_pressed) {
for (int32_t i = 0; i < 40; i++) {
__asm__ volatile("nop" ::: "memory");
}
}
+#endif
diff --git a/keyboards/bastardkb/charybdis/3x5/keymaps/drashna/mcuconf.h b/keyboards/bastardkb/charybdis/3x5/keymaps/drashna/mcuconf.h
index fd71b54b77..9c40967015 100644
--- a/keyboards/bastardkb/charybdis/3x5/keymaps/drashna/mcuconf.h
+++ b/keyboards/bastardkb/charybdis/3x5/keymaps/drashna/mcuconf.h
@@ -18,25 +18,27 @@
#include_next "mcuconf.h"
-#undef STM32_I2C_USE_I2C1
-#define STM32_I2C_USE_I2C1 TRUE
+#if defined(KEYBOARD_bastardkb_charybdis_3x5_blackpill)
+# undef STM32_I2C_USE_I2C1
+# define STM32_I2C_USE_I2C1 TRUE
// #undef STM32_I2C_I2C1_RX_DMA_STREAM
// #define STM32_I2C_I2C1_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 0)
-#undef STM32_I2C_I2C1_TX_DMA_STREAM
-#define STM32_I2C_I2C1_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 1)
+# undef STM32_I2C_I2C1_TX_DMA_STREAM
+# define STM32_I2C_I2C1_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 1)
-#undef STM32_PWM_USE_TIM2
-#define STM32_PWM_USE_TIM2 TRUE
+# undef STM32_PWM_USE_TIM2
+# define STM32_PWM_USE_TIM2 TRUE
-#undef STM32_PWM_USE_TIM3
-#define STM32_PWM_USE_TIM3 TRUE
+# undef STM32_PWM_USE_TIM3
+# define STM32_PWM_USE_TIM3 TRUE
-#undef STM32_SPI_USE_SPI1
-#define STM32_SPI_USE_SPI1 TRUE
+# undef STM32_SPI_USE_SPI1
+# define STM32_SPI_USE_SPI1 TRUE
-#undef STM32_SERIAL_USE_USART2
-#define STM32_SERIAL_USE_USART2 TRUE
+# undef STM32_SERIAL_USE_USART2
+# define STM32_SERIAL_USE_USART2 TRUE
-#undef STM32_ST_USE_TIMER
-#define STM32_ST_USE_TIMER 5
+# undef STM32_ST_USE_TIMER
+# define STM32_ST_USE_TIMER 5
+#endif
diff --git a/keyboards/bastardkb/charybdis/3x5/keymaps/drashna/rules.mk b/keyboards/bastardkb/charybdis/3x5/keymaps/drashna/rules.mk
index dc0395c800..ff4ede45ca 100644
--- a/keyboards/bastardkb/charybdis/3x5/keymaps/drashna/rules.mk
+++ b/keyboards/bastardkb/charybdis/3x5/keymaps/drashna/rules.mk
@@ -1,28 +1,45 @@
-# MCU name
-MCU = STM32F411
-BOARD = BLACKPILL_STM32_F411
+RGB_MATRIX_ENABLE = no
+CUSTOM_UNICODE_ENABLE = no
+CUSTOM_POINTING_DEVICE = no
+CUSTOM_SPLIT_TRANSPORT_SYNC = no
-# Bootloader selection
-# BOOTLOADER = stm32-dfu
-BOOTLOADER := tinyuf2
-LTO_ENABLE := no
+ifeq ($(strip $(KEYBOARD)), bastardkb/charybdis/3x5/blackpill)
+ # Bootloader selection
+ BOOTLOADER := tinyuf2
-BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
-KEYBOARD_SHARED_EP = yes
-MOUSE_SHARED_EP = yes
+ LTO_ENABLE := no
-EEPROM_DRIVER = spi
-WS2812_DRIVER = pwm
-SERIAL_DRIVER = usart
-AUDIO_DRIVER = pwm_hardware
+ AUDIO_SUPPORTED = yes
+ AUDIO_ENABLE = yes
+ AUDIO_DRIVER = pwm_hardware
-AUDIO_SUPPORTED = yes
-AUDIO_ENABLE = yes
-MOUSEKEY_ENABLE = yes
-NKRO_ENABLE = yes
-CONSOLE_ENABLE = yes
+ OVERLOAD_FEATURES = yes
+endif
-AUTOCORRECT_ENABLE = yes
+ifeq ($(strip $(KEYBOARD)), bastardkb/charybdis/3x5/v2/stemcell)
+ OVERLOAD_FEATURES = yes
+endif
+ifeq ($(strip $(KEYBOARD)), bastardkb/charybdis/3x5/v2/splinky)
+ OVERLOAD_FEATURES = yes
+endif
-DEBOUNCE_TYPE = asym_eager_defer_pk
+
+ifeq ($(strip $(OVERLOAD_FEATURES)), yes)
+ BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+ KEYBOARD_SHARED_EP = yes
+ MOUSE_SHARED_EP = yes
+
+ MOUSEKEY_ENABLE = yes
+ NKRO_ENABLE = yes
+ CONSOLE_ENABLE = yes
+ RGB_MATRIX_ENABLE = yes
+
+ AUTOCORRECT_ENABLE = yes
+
+ CUSTOM_UNICODE_ENABLE = yes
+ CUSTOM_POINTING_DEVICE = yes
+ CUSTOM_SPLIT_TRANSPORT_SYNC = yes
+
+ DEBOUNCE_TYPE = asym_eager_defer_pk
+endif