diff --git a/keyboards/annepro2/boards/ANNEPRO2_C18/board.h b/keyboards/annepro2/boards/ANNEPRO2_C18/board.h new file mode 100644 index 00000000000..6b33268a9bc --- /dev/null +++ b/keyboards/annepro2/boards/ANNEPRO2_C18/board.h @@ -0,0 +1,70 @@ +/* + ChibiOS - Copyright (C) 2020 Codetector + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +#ifndef BOARD_H +#define BOARD_H +/* + * Setup for Anne Pro 2 board. + */ + +/* + * Board identifier. + */ +#define ANNEPRO2 +#define BOARD_NAME "Anne Pro 2" + +#define HT32F52342 + +#define FLASH_SIZE (0x10000 - 0x4000) // 64kB - 16kB + +/* + * I/O + */ + +// outputs (rows are pulled low) +#define LINE_ROW1 PAL_LINE(IOPORTB, 5) +#define LINE_ROW2 PAL_LINE(IOPORTB, 4) +#define LINE_ROW3 PAL_LINE(IOPORTB, 3) +#define LINE_ROW4 PAL_LINE(IOPORTB, 2) +#define LINE_ROW5 PAL_LINE(IOPORTC, 14) + +// inputs (columns are sampled) +#define LINE_COL1 PAL_LINE(IOPORTC, 4) +#define LINE_COL2 PAL_LINE(IOPORTC, 5) +#define LINE_COL3 PAL_LINE(IOPORTB, 15) +#define LINE_COL4 PAL_LINE(IOPORTC, 0) +#define LINE_COL5 PAL_LINE(IOPORTC, 11) +#define LINE_COL6 PAL_LINE(IOPORTC, 10) +#define LINE_COL7 PAL_LINE(IOPORTC, 12) +#define LINE_COL8 PAL_LINE(IOPORTC, 13) +#define LINE_COL9 PAL_LINE(IOPORTA, 8) +#define LINE_COL10 PAL_LINE(IOPORTA, 9) +#define LINE_COL11 PAL_LINE(IOPORTA, 10) +#define LINE_COL12 PAL_LINE(IOPORTA, 11) +#define LINE_COL13 PAL_LINE(IOPORTD, 2) +#define LINE_COL14 PAL_LINE(IOPORTD, 3) + +#if !defined(_FROM_ASM_) +#ifdef __cplusplus +extern "C" { +#endif + void boardInit(void); +#ifdef __cplusplus +} +#endif +#endif /* _FROM_ASM_ */ + +#endif /* BOARD_H */ diff --git a/keyboards/annepro2/boards/ANNEPRO2_C18/board.mk b/keyboards/annepro2/boards/ANNEPRO2_C18/board.mk new file mode 100644 index 00000000000..d3ebf910b57 --- /dev/null +++ b/keyboards/annepro2/boards/ANNEPRO2_C18/board.mk @@ -0,0 +1,5 @@ +# List of all the board related files. +BOARDSRC = $(BOARD_PATH)/boards/ANNEPRO2/board.c + +# Required include directories +BOARDINC = $(BOARD_PATH)/boards/ANNEPRO2_C18 diff --git a/keyboards/annepro2/config.h b/keyboards/annepro2/c15/config.h similarity index 100% rename from keyboards/annepro2/config.h rename to keyboards/annepro2/c15/config.h diff --git a/keyboards/annepro2/rules.mk b/keyboards/annepro2/c15/rules.mk similarity index 100% rename from keyboards/annepro2/rules.mk rename to keyboards/annepro2/c15/rules.mk diff --git a/keyboards/annepro2/c18/config.h b/keyboards/annepro2/c18/config.h new file mode 100644 index 00000000000..ad633388922 --- /dev/null +++ b/keyboards/annepro2/c18/config.h @@ -0,0 +1,169 @@ +/* + * Copyright (c) 2018 Charlie Waters + * + * 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 . + */ + +#pragma once + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x04d9 +#define PRODUCT_ID 0xa291 +#define DEVICE_VER 0x1337 +#define MANUFACTURER Holtek +#define PRODUCT Anne Pro 2 (c18) QMK +#define DESCRIPTION Anne Pro 2 (c18) with QMK +#define NAME_SLUG "annepro2" + + +// key matrix size +#define MATRIX_ROWS 5 +#define MATRIX_COLS 14 +// layer size: MATRIX_ROWS * MATRIX_COLS * sizeof(uint16_t) = 144 bytes + +// Max available layers +#define MAX_LAYERS 8 +// keymaps size: layer size * MAX_LAYERS = 1152 bytes + +#define KEYMAP_60_ANSI +// Number of supported layouts +#define NUM_LAYOUTS 4 + +// Matrix keymap + +#define KEYMAP( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, \ + K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, \ + K40, K42, K43, K46, K49, K4A, K4B, K4C \ +) { \ + /* COL1 COL2 COL3 COL4 COL5 COL6 COL7 COL8 COL9 COL10 COL11 COL12 COL13 COL14*/ \ + /* ROW1 */ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \ + /* ROW2 */ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \ + /* ROW3 */ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, KC_NO}, \ + /* ROW4 */ { K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, KC_NO}, \ + /* ROW5 */ { K40, KC_NO, K42, K43, KC_NO, KC_NO, K46, KC_NO, KC_NO, K49, K4A, K4B, K4C, KC_NO}, \ +} + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* number of backlight levels */ +// #define BACKLIGHT_LEVELS 10 + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +//#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +//#define LOCKING_RESYNC_ENABLE + +/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. + * This is userful for the Windows task manager shortcut (ctrl+shift+esc). + */ +// #define GRAVE_ESC_CTRL_OVERRIDE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +#define FORCE_NKRO + +/* + * Magic Key Options + * + * Magic keys are hotkey commands that allow control over firmware functions of + * the keyboard. They are best used in combination with the HID Listen program, + * found here: https://www.pjrc.com/teensy/hid_listen.html + * + * The options below allow the magic key functionality to be changed. This is + * useful if your keyboard/keypad is missing keys and you want magic key support. + * + */ + +/* key combination for magic key command */ +/* +#define IS_COMMAND() ( \ + keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ +) +*/ + +/* control how magic key switches layers */ +//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true +//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true +//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false + +/* override magic key keymap */ +//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS +//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS +//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM +//#define MAGIC_KEY_HELP1 H +//#define MAGIC_KEY_HELP2 SLASH +//#define MAGIC_KEY_DEBUG D +//#define MAGIC_KEY_DEBUG_MATRIX X +//#define MAGIC_KEY_DEBUG_KBD K +//#define MAGIC_KEY_DEBUG_MOUSE M +//#define MAGIC_KEY_VERSION V +//#define MAGIC_KEY_STATUS S +//#define MAGIC_KEY_CONSOLE C +//#define MAGIC_KEY_LAYER0_ALT1 ESC +//#define MAGIC_KEY_LAYER0_ALT2 GRAVE +//#define MAGIC_KEY_LAYER0 0 +//#define MAGIC_KEY_LAYER1 1 +//#define MAGIC_KEY_LAYER2 2 +//#define MAGIC_KEY_LAYER3 3 +//#define MAGIC_KEY_LAYER4 4 +//#define MAGIC_KEY_LAYER5 5 +//#define MAGIC_KEY_LAYER6 6 +//#define MAGIC_KEY_LAYER7 7 +//#define MAGIC_KEY_LAYER8 8 +//#define MAGIC_KEY_LAYER9 9 +//#define MAGIC_KEY_BOOTLOADER R +//#define MAGIC_KEY_LOCK CAPS +//#define MAGIC_KEY_EEPROM E +//#define MAGIC_KEY_NKRO N +//#define MAGIC_KEY_SLEEP_LED Z + +/* + * Feature disable options + * These options are also useful to firmware size reduction. + */ + +/* disable debug print */ +// #define NO_DEBUG + +/* disable print */ +// #define NO_PRINTg + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT +//#define NO_ACTION_MACRO +//#define NO_ACTION_FUNCTION + diff --git a/keyboards/annepro2/c18/rules.mk b/keyboards/annepro2/c18/rules.mk new file mode 100644 index 00000000000..963f115e27e --- /dev/null +++ b/keyboards/annepro2/c18/rules.mk @@ -0,0 +1,37 @@ +# Anne Pro 2 +SRC = \ + matrix.c \ + hardfault_handler.c + +LAYOUTS += + +# MCU +MCU = cortex-m0plus +ARMV = 6 +USE_FPU = no +MCU_FAMILY = HT32 +MCU_SERIES = HT32F523x2 +MCU_LDSCRIPT = HT32F52342_ANNEPRO2 +MCU_STARTUP = ht32f523x2 + +BOARD = ANNEPRO2_C18 + +OPT_DEFS = -Wno-unused-function -fdump-rtl-dfinish -fstack-usage +#EXTRALDFLAGS = -Wl,--print-memory-usage + +# Options + +# Keys +CUSTOM_MATRIX = yes +NKRO_ENABLE = no +MOUSEKEY_ENABLE = no +EXTRAKEY_ENABLE = yes +KEY_LOCK_ENABLE = no + +# Other featues +BOOTMAGIC_ENABLE = no +CONSOLE_ENABLE = no +COMMAND_ENABLE = yes +RAW_ENABLE = yes +MIDI_ENABLE = no +VIRTSER_ENABLE = no