diff --git a/keyboards/annepro2/annepro2.c b/keyboards/annepro2/annepro2.c
index 4d479aa241f..4bd2cecadd5 100644
--- a/keyboards/annepro2/annepro2.c
+++ b/keyboards/annepro2/annepro2.c
@@ -14,7 +14,6 @@
* along with this program. If not, see .
*/
-#include "ch.h"
#include "hal.h"
#include "annepro2.h"
#include "annepro2_ble.h"
@@ -26,10 +25,6 @@ static const SerialConfig ledUartInitConfig = {
.speed = 115200,
};
-/*
- * Some people have serial issues between main chip and led chip.
- * This code allows them to easily reduce the speed to 9600 for testing
- */
static const SerialConfig ledUartRuntimeConfig = {
.speed = 115200,
};
@@ -42,7 +37,7 @@ static uint8_t ledMcuWakeup[11] = {0x7b, 0x10, 0x43, 0x10, 0x03, 0x00, 0x00, 0x7
ble_capslock_t BLECapsLock = {._dummy = {0}, .caps_lock = false};
-void OVERRIDE bootloader_jump(void) {
+void bootloader_jump(void) {
// Send msg to shine to boot into IAP
annepro2SetIAP();
@@ -106,13 +101,6 @@ void matrix_scan_kb() {
// read it into the capslock struct
while (!sdGetWouldBlock(&SD1)) {
sdReadTimeout(&SD1, (uint8_t *)&BLECapsLock, sizeof(ble_capslock_t), 10);
-
- // if it's capslock from ble, darken led
- if (BLECapsLock.caps_lock) {
- // annepro2LedClearMask(MATRIX_COLS * 2);
- } else {
- // annepro2LedSetMask(MATRIX_COLS * 2);
- }
}
/* While there's data from LED keyboard sent - read it. */
diff --git a/keyboards/annepro2/annepro2.h b/keyboards/annepro2/annepro2.h
index 25e0cf4932f..e952c2dcb5a 100644
--- a/keyboards/annepro2/annepro2.h
+++ b/keyboards/annepro2/annepro2.h
@@ -29,9 +29,6 @@ extern uint16_t annepro2LedMatrix[MATRIX_ROWS * MATRIX_COLS];
extern ble_capslock_t BLECapsLock;
-/* System clock - needed for custom matrix lite */
-#define STM32_SYSCLK HT32_CK_SYS_FREQUENCY
-
// Matrix keymap
// clang-format off
#define LAYOUT( \
diff --git a/keyboards/annepro2/boards/ANNEPRO2/board.mk b/keyboards/annepro2/boards/ANNEPRO2/board.mk
deleted file mode 100644
index 0464919caf2..00000000000
--- a/keyboards/annepro2/boards/ANNEPRO2/board.mk
+++ /dev/null
@@ -1,5 +0,0 @@
-# List of all the board related files.
-BOARDSRC = $(BOARD_PATH)/boards/ANNEPRO2/board.c
-
-# Required include directories
-BOARDINC = $(BOARD_PATH)/boards/ANNEPRO2
diff --git a/keyboards/annepro2/boards/ANNEPRO2/board.c b/keyboards/annepro2/boards/ANNEPRO2_C15/board.c
similarity index 96%
rename from keyboards/annepro2/boards/ANNEPRO2/board.c
rename to keyboards/annepro2/boards/ANNEPRO2_C15/board.c
index 98f9d959018..2be9e0f31c2 100644
--- a/keyboards/annepro2/boards/ANNEPRO2/board.c
+++ b/keyboards/annepro2/boards/ANNEPRO2_C15/board.c
@@ -15,7 +15,6 @@
*/
#include
-#include "ch.h"
#include "hal.h"
#include "wait.h"
#include "led.h"
@@ -176,13 +175,5 @@ void __early_init(void) {
ht32_clock_init();
}
-/**
- * @brief Board-specific initialization code.
- * @todo Add your board-specific code, if any.
- */
void boardInit(void) {
-#if HAL_USE_GPT == TRUE
- gpt_init();
-#endif
- // spi_init();
}
diff --git a/keyboards/annepro2/boards/ANNEPRO2/board.h b/keyboards/annepro2/boards/ANNEPRO2_C15/board.h
similarity index 100%
rename from keyboards/annepro2/boards/ANNEPRO2/board.h
rename to keyboards/annepro2/boards/ANNEPRO2_C15/board.h
diff --git a/keyboards/annepro2/boards/ANNEPRO2_C15/board.mk b/keyboards/annepro2/boards/ANNEPRO2_C15/board.mk
new file mode 100644
index 00000000000..f308892e7c4
--- /dev/null
+++ b/keyboards/annepro2/boards/ANNEPRO2_C15/board.mk
@@ -0,0 +1,5 @@
+# List of all the board related files.
+BOARDSRC = $(BOARD_PATH)/boards/ANNEPRO2_C15/board.c
+
+# Required include directories
+BOARDINC = $(BOARD_PATH)/boards/ANNEPRO2_C15
diff --git a/keyboards/annepro2/boards/ANNEPRO2_C18/board.mk b/keyboards/annepro2/boards/ANNEPRO2_C18/board.mk
index d3ebf910b57..eb35a913da5 100644
--- a/keyboards/annepro2/boards/ANNEPRO2_C18/board.mk
+++ b/keyboards/annepro2/boards/ANNEPRO2_C18/board.mk
@@ -1,5 +1,5 @@
# List of all the board related files.
-BOARDSRC = $(BOARD_PATH)/boards/ANNEPRO2/board.c
+BOARDSRC = $(BOARD_PATH)/boards/ANNEPRO2_C15/board.c
# Required include directories
BOARDINC = $(BOARD_PATH)/boards/ANNEPRO2_C18
diff --git a/keyboards/annepro2/c15/config.h b/keyboards/annepro2/c15/config.h
index 2a74608adf2..490ce9c3916 100644
--- a/keyboards/annepro2/c15/config.h
+++ b/keyboards/annepro2/c15/config.h
@@ -18,8 +18,8 @@
#pragma once
/* USB Device descriptor parameter */
-#define VENDOR_ID 0x04d9
-#define PRODUCT_ID 0xa290
+#define VENDOR_ID 0xfeed
+#define PRODUCT_ID 0xac15
#define DEVICE_VER 0x1337
#define MANUFACTURER Obins
#define PRODUCT Anne Pro 2 QMK
diff --git a/keyboards/annepro2/c18/config.h b/keyboards/annepro2/c18/config.h
index 800bf09d053..eb23bde144d 100644
--- a/keyboards/annepro2/c18/config.h
+++ b/keyboards/annepro2/c18/config.h
@@ -18,10 +18,10 @@
#pragma once
/* USB Device descriptor parameter */
-#define VENDOR_ID 0x04d9
-#define PRODUCT_ID 0xa291
+#define VENDOR_ID 0xfeed
+#define PRODUCT_ID 0xac18
#define DEVICE_VER 0x1337
-#define MANUFACTURER Holtek
+#define MANUFACTURER Obins
#define PRODUCT Anne Pro 2(c18)QMK
#define ANNEPRO2_C18
@@ -31,11 +31,6 @@
#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
@@ -51,90 +46,4 @@
#define SPI_MOSI_PAL_MODE 5
#define SPI_MISO_PIN A2
#define SPI_MISO_PAL_MODE 5
-// EEPROM Config for W25X20CL
-#define EXTERNAL_EEPROM_SPI_SLAVE_SELECT_PIN A3
-#define EXTERNAL_EEPROM_SPI_CLOCK_DIVISOR 16
-#define EXTERNAL_EEPROM_BYTE_COUNT 1024 // 262144
-#define EXTERNAL_EEPROM_PAGE_SIZE 256
-#define EXTERNAL_EEPROM_ADDRESS_SIZE 3
-#define EXTERNAL_EEPROM_SPI_LSBFIRST false
-#define EXTERNAL_EEPROM_SPI_MODE 3
-// HAL Config
-#define HAL_USE_SPI TRUE
-#define SPI_SELECT_MODE SPI_SELECT_MODE_PAD
-// MCU Config
-#define HT32_SPI_USE_SPI1 TRUE
-#define HT32_SPI1_IRQ_PRIORITY 9
#endif
-
-/* 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)) \
-)
-*/
-
-
-/*
- * Feature disable options
- * These options are also useful to firmware size reduction.
- */
-
-/* disable debug print */
-// #define NO_DEBUG
-
-/* disable print */
-// #define NO_PRINT
-
-/* 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/eeprom_w25x20cl.c b/keyboards/annepro2/eeprom_w25x20cl.c
deleted file mode 100644
index 7272cb3c69e..00000000000
--- a/keyboards/annepro2/eeprom_w25x20cl.c
+++ /dev/null
@@ -1,197 +0,0 @@
-/* Copyright 2020 Nick Brassel (tzarc) and tech2077
- *
- * 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 .
- */
-
-#include
-#include
-
-/*
- Note that the implementations of eeprom_XXXX_YYYY on AVR are normally
- provided by avr-libc. The same functions are reimplemented below and are
- rerouted to the external SPI equivalent.
-
- Seemingly, as this is compiled from within QMK, the object file generated
- during the build overrides the avr-libc implementation during the linking
- stage.
-
- On other platforms such as ARM, there are no provided implementations, so
- there is nothing to override during linkage.
-*/
-
-#include "wait.h"
-#include "spi_master.h"
-#include "eeprom.h"
-#include "eeprom_w25x20cl.h"
-#include "timer.h"
-#include "debug.h"
-
-#define CMD_WREN 0x06u
-#define CMD_WRDI 0x04u
-#define CMD_RDSR 0x05u
-#define CMD_WRSR 0x01u
-#define CMD_READ 0x03u
-#define CMD_WRITE 0x02u
-#define CMD_SECTOR_ERASE 0x20u
-
-#define SR_WIP 0x01u
-
-// #define DEBUG_EEPROM_OUTPUT
-
-#ifndef EXTERNAL_EEPROM_SPI_TIMEOUT
-# define EXTERNAL_EEPROM_SPI_TIMEOUT 100
-#endif
-
-bool spi_eeprom_start(void) { return spi_start(EXTERNAL_EEPROM_SPI_SLAVE_SELECT_PIN, EXTERNAL_EEPROM_SPI_LSBFIRST, EXTERNAL_EEPROM_SPI_MODE, EXTERNAL_EEPROM_SPI_CLOCK_DIVISOR); }
-
-static spi_status_t spi_eeprom_wait_while_busy(int timeout) {
- uint32_t deadline = timer_read32() + timeout;
- spi_status_t response;
- spi_write(CMD_RDSR);
- do {
- response = spi_read();
- if (timer_read32() >= deadline) {
- return SPI_STATUS_TIMEOUT;
- }
- } while ((uint16_t)response & SR_WIP);
- return SPI_STATUS_SUCCESS;
-}
-//----------------------------------------------------------------------------------------------------------------------
-
-void eeprom_erase(uint32_t addr) {
-#if defined(CONSOLE_ENABLE) && defined(DEBUG_EEPROM_OUTPUT)
- uint32_t start = timer_read32();
-#endif
-
- spi_eeprom_start();
- spi_write(CMD_WREN);
- spi_stop();
-
- spi_eeprom_start();
- spi_write(CMD_SECTOR_ERASE);
- spi_write((uint8_t)((addr & 0xFF0000u) >> 16u));
- spi_write((uint8_t)((addr & 0x00FF00u) >> 8u));
- spi_write((uint8_t)((addr & 0x0000FFu)));
- spi_stop();
-
- spi_eeprom_start();
- spi_status_t response = spi_eeprom_wait_while_busy(10000);
- spi_stop();
- if (response == SPI_STATUS_TIMEOUT) {
- dprint("SPI timeout for WIP check\n");
- return;
- }
-
-#if defined(CONSOLE_ENABLE) && defined(DEBUG_EEPROM_OUTPUT)
- dprintf("EEPROM erase took %ldms to complete\n", ((long)(timer_read32() - start)));
-#endif
-}
-
-void eeprom_read(void *buf, uint32_t addr, size_t len) {
- //-------------------------------------------------
- // Wait for the write-in-progress bit to be cleared
- bool res = spi_eeprom_start();
- if (!res) {
- dprint("failed to start SPI for WIP check\n");
- spi_stop();
- return;
- }
-
- spi_status_t response = spi_eeprom_wait_while_busy(EXTERNAL_EEPROM_SPI_TIMEOUT);
- spi_stop();
- if (response == SPI_STATUS_TIMEOUT) {
- dprint("SPI timeout for WIP check\n");
- spi_stop();
- return;
- }
-
- //-------------------------------------------------
- // Perform read
- res = spi_eeprom_start();
- if (!res) {
- dprint("failed to start SPI for read\n");
- spi_stop();
- return;
- }
-
- spi_write(CMD_READ);
- spi_write((uint8_t)((addr & 0xFF0000u) >> 16u));
- spi_write((uint8_t)((addr & 0x00FF00u) >> 8u));
- spi_write((uint8_t)((addr & 0x0000FFu)));
- spi_receive(buf, len);
- spi_stop();
-
-#if defined(CONSOLE_ENABLE) && defined(DEBUG_EEPROM_OUTPUT)
- dprintf("[EEPROM R] 0x%08lX: ", (addr));
- for (size_t i = 0; i < len; ++i) {
- dprintf(" %02X", (int)(((uint8_t *)buf)[i]));
- }
- dprintf("\n");
-#endif // DEBUG_EEPROM_OUTPUT
-}
-
-void eeprom_write(const void *buf, uint32_t addr, size_t len) {
- eeprom_erase(addr);
-
- //-------------------------------------------------
- // Enable writes
- bool res = spi_eeprom_start();
- if (!res) {
- dprint("failed to start SPI for write-enable\n");
- spi_stop();
- return;
- }
-
- spi_write(CMD_WREN);
- spi_stop();
-
- wait_us(1);
-
- //-------------------------------------------------
- // Perform the write
- res = spi_eeprom_start();
- if (!res) {
- dprint("failed to start SPI for write\n");
- spi_stop();
- return;
- }
-
-#if defined(CONSOLE_ENABLE) && defined(DEBUG_EEPROM_OUTPUT)
- dprintf("[EEPROM W] 0x%08lX: ", ((uint32_t)(uintptr_t)addr));
- for (size_t i = 0; i < len; i++) {
- dprintf(" %02X", (int)(uint8_t)(buf[i]));
- }
- dprintf("\n");
-#endif // DEBUG_EEPROM_OUTPUT
-
- spi_write(CMD_WRITE);
- spi_write((uint8_t)((addr & 0xFF0000u) >> 16u));
- spi_write((uint8_t)((addr & 0x00FF00u) >> 8u));
- spi_write((uint8_t)((addr & 0x0000FFu)));
- spi_transmit(buf, len);
- spi_stop();
-
- res = spi_eeprom_start();
- if (!res) {
- dprint("failed to start SPI for status\n");
- spi_stop();
- return;
- }
- spi_status_t response = spi_eeprom_wait_while_busy(EXTERNAL_EEPROM_SPI_TIMEOUT);
- spi_stop();
- if (response == SPI_STATUS_TIMEOUT) {
- dprint("SPI timeout for WIP check\n");
- return;
- }
-}
diff --git a/keyboards/annepro2/eeprom_w25x20cl.h b/keyboards/annepro2/eeprom_w25x20cl.h
deleted file mode 100644
index 17021daded6..00000000000
--- a/keyboards/annepro2/eeprom_w25x20cl.h
+++ /dev/null
@@ -1,84 +0,0 @@
-/* Copyright 2020 Nick Brassel (tzarc) and tech2077
- *
- * 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
-
-void eeprom_erase(uint32_t addr);
-void eeprom_read(void *buf, uint32_t addr, size_t len);
-void eeprom_write(const void *buf, uint32_t addr, size_t len);
-
-/*
- The slave select pin of the EEPROM.
- This needs to be a normal GPIO pin_t value, such as A7.
-*/
-#ifndef EXTERNAL_EEPROM_SPI_SLAVE_SELECT_PIN
-# error "No chip select pin defined -- missing EXTERNAL_EEPROM_SPI_SLAVE_SELECT_PIN"
-#endif
-
-/*
- The clock divisor for SPI to ensure that the MCU is within the
- specifications of the EEPROM chip. Generally this will be PCLK divided by
- the intended divisor -- check your clock settings and the datasheet of
- your EEPROM.
-*/
-#ifndef EXTERNAL_EEPROM_SPI_CLOCK_DIVISOR
-# ifdef __AVR__
-# define EXTERNAL_EEPROM_SPI_CLOCK_DIVISOR 8
-# else
-# define EXTERNAL_EEPROM_SPI_CLOCK_DIVISOR 64
-# endif
-#endif
-
-/*
- The SPI mode to communicate with the EEPROM.
-*/
-#ifndef EXTERNAL_EEPROM_SPI_MODE
-# define EXTERNAL_EEPROM_SPI_MODE 0
-#endif
-
-/*
- Whether or not the SPI communication between the MCU and EEPROM should be
- LSB-first.
-*/
-#ifndef EXTERNAL_EEPROM_SPI_LSBFIRST
-# define EXTERNAL_EEPROM_SPI_LSBFIRST false
-#endif
-
-/*
- The total size of the EEPROM, in bytes. The EEPROM datasheet will usually
- specify this value in kbits, and will require conversion to bytes.
-*/
-#ifndef EXTERNAL_EEPROM_BYTE_COUNT
-# define EXTERNAL_EEPROM_BYTE_COUNT 8192
-#endif
-
-/*
- The page size in bytes of the EEPROM, as specified in the datasheet.
-*/
-#ifndef EXTERNAL_EEPROM_PAGE_SIZE
-# define EXTERNAL_EEPROM_PAGE_SIZE 32
-#endif
-
-/*
- The address size in bytes of the EEPROM. For EEPROMs with <=256 bytes, this
- will likely be 1. For EEPROMs >256 and <=65536, this will be 2. For EEPROMs
- >65536, this will likely need to be 4.
-
- As expected, consult the datasheet for specifics of your EEPROM.
-*/
-#ifndef EXTERNAL_EEPROM_ADDRESS_SIZE
-# define EXTERNAL_EEPROM_ADDRESS_SIZE 2
-#endif
\ No newline at end of file
diff --git a/keyboards/annepro2/halconf.h b/keyboards/annepro2/halconf.h
index 686b91a7fb2..b0cb44003a3 100644
--- a/keyboards/annepro2/halconf.h
+++ b/keyboards/annepro2/halconf.h
@@ -25,4 +25,9 @@
#define SERIAL_USB_BUFFERS_SIZE 256
+#if defined(ANNEPRO2_EEPROM)
+#define HAL_USE_SPI TRUE
+#define SPI_SELECT_MODE SPI_SELECT_MODE_PAD
+#endif
+
#include_next
diff --git a/keyboards/annepro2/hardfault_handler.c b/keyboards/annepro2/hardfault_handler.c
index 78d2b641783..f9d32c75a06 100644
--- a/keyboards/annepro2/hardfault_handler.c
+++ b/keyboards/annepro2/hardfault_handler.c
@@ -1,4 +1,19 @@
-#include "ch.h"
+ /* Copyright 2021 OpenAnnePro community
+ *
+ * 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 .
+ */
+
#include
#include "hal.h"
diff --git a/keyboards/annepro2/matrix.c b/keyboards/annepro2/matrix.c
index 177518756fb..ffab3be4965 100644
--- a/keyboards/annepro2/matrix.c
+++ b/keyboards/annepro2/matrix.c
@@ -25,15 +25,10 @@
#include "matrix.h"
#include "annepro2.h"
-static matrix_row_t matrix_debouncing[MATRIX_ROWS];
-static uint32_t debounce_times[MATRIX_ROWS];
-
extern ioline_t row_list[MATRIX_ROWS];
extern ioline_t col_list[MATRIX_COLS];
void matrix_init_custom(void) {
- memset(matrix_debouncing, 0, MATRIX_ROWS * sizeof(matrix_row_t));
- memset(debounce_times, 0, MATRIX_ROWS * sizeof(uint32_t));
}
bool matrix_scan_custom(matrix_row_t current_matrix[]) {
@@ -62,17 +57,8 @@ bool matrix_scan_custom(matrix_row_t current_matrix[]) {
data |= (((port & (1 << PAL_PAD(line))) ? 0 : 1) << col);
}
- // if a key event happens <5ms before the system time rolls over,
- // the event will "never" debounce
- // but any event on the same row will reset the debounce timer
- if (matrix_debouncing[row] != data) {
- // whenever row changes restart debouncing
- matrix_debouncing[row] = data;
- debounce_times[row] = timer_read32();
- } else if (debounce_times[row] && timer_elapsed32(debounce_times[row]) >= DEBOUNCE) {
- // when debouncing complete, update matrix
- current_matrix[row] = matrix_debouncing[row];
- debounce_times[row] = 0;
+ if (current_matrix[row] != data) {
+ current_matrix[row] = data;
matrix_has_changed = true;
}
}
diff --git a/keyboards/annepro2/mcuconf.h b/keyboards/annepro2/mcuconf.h
index 12b8771baa8..a663cae5af3 100644
--- a/keyboards/annepro2/mcuconf.h
+++ b/keyboards/annepro2/mcuconf.h
@@ -63,4 +63,9 @@
#define HT32_USB_USE_USB0 TRUE
#define HT32_USB_USB0_IRQ_PRIORITY 5
+#if defined(ANNEPRO2_EEPROM)
+#define HT32_SPI_USE_SPI1 TRUE
+#define HT32_SPI1_IRQ_PRIORITY 9
+#endif
+
#endif /* _MCUCONF_H_ */