forked from forks/qmk_firmware
2020 November 28 Breaking Changes Update (#11053)
* Branch point for 2020 November 28 Breaking Change * Remove matrix_col_t to allow MATRIX_ROWS > 32 (#10183) * Add support for soft serial to ATmega32U2 (#10204) * Change MIDI velocity implementation to allow direct control of velocity value (#9940) * Add ability to build a subset of all keyboards based on platform. * Actually use eeprom_driver_init(). * Make bootloader_jump weak for ChibiOS. (#10417) * Joystick 16-bit support (#10439) * Per-encoder resolutions (#10259) * Share button state from mousekey to pointing_device (#10179) * Add hotfix for chibios keyboards not wake (#10088) * Add advanced/efficient RGB Matrix Indicators (#8564) * Naming change. * Support for STM32 GPIOF,G,H,I,J,K (#10206) * Add milc as a dependency and remove the installed milc (#10563) * ChibiOS upgrade: early init conversions (#10214) * ChibiOS upgrade: configuration file migrator (#9952) * Haptic and solenoid cleanup (#9700) * XD75 cleanup (#10524) * OLED display update interval support (#10388) * Add definition based on currently-selected serial driver. (#10716) * New feature: Retro Tapping per key (#10622) * Allow for modification of output RGB values when using rgblight/rgb_matrix. (#10638) * Add housekeeping task callbacks so that keyboards/keymaps are capable of executing code for each main loop iteration. (#10530) * Rescale both ChibiOS and AVR backlighting. * Reduce Helix keyboard build variation (#8669) * Minor change to behavior allowing display updates to continue between task ticks (#10750) * Some GPIO manipulations in matrix.c change to atomic. (#10491) * qmk cformat (#10767) * [Keyboard] Update the Speedo firmware for v3.0 (#10657) * Maartenwut/Maarten namechange to evyd13/Evy (#10274) * [quantum] combine repeated lines of code (#10837) * Add step sequencer feature (#9703) * aeboards/ext65 refactor (#10820) * Refactor xelus/dawn60 for Rev2 later (#10584) * add DEBUG_MATRIX_SCAN_RATE_ENABLE to common_features.mk (#10824) * [Core] Added `add_oneshot_mods` & `del_oneshot_mods` (#10549) * update chibios os usb for the otg driver (#8893) * Remove HD44780 References, Part 4 (#10735) * [Keyboard] Add Valor FRL TKL (+refactor) (#10512) * Fix cursor position bug in oled_write_raw functions (#10800) * Fixup version.h writing when using SKIP_VERSION=yes (#10972) * Allow for certain code in the codebase assuming length of string. (#10974) * Add AT90USB support for serial.c (#10706) * Auto shift: support repeats and early registration (#9826) * Rename ledmatrix.h to match .c file (#7949) * Split RGB_MATRIX_ENABLE into _ENABLE and _DRIVER (#10231) * Split LED_MATRIX_ENABLE into _ENABLE and _DRIVER (#10840) * Merge point for 2020 Nov 28 Breaking Change
This commit is contained in:
parent
15385d4113
commit
c66df16644
24
Makefile
24
Makefile
|
@ -272,11 +272,24 @@ endef
|
||||||
define PARSE_RULE
|
define PARSE_RULE
|
||||||
RULE := $1
|
RULE := $1
|
||||||
COMMANDS :=
|
COMMANDS :=
|
||||||
|
REQUIRE_PLATFORM_KEY :=
|
||||||
# If the rule starts with all, then continue the parsing from
|
# If the rule starts with all, then continue the parsing from
|
||||||
# PARSE_ALL_KEYBOARDS
|
# PARSE_ALL_KEYBOARDS
|
||||||
ifeq ($$(call COMPARE_AND_REMOVE_FROM_RULE,all),true)
|
ifeq ($$(call COMPARE_AND_REMOVE_FROM_RULE,all),true)
|
||||||
KEYBOARD_RULE=all
|
KEYBOARD_RULE=all
|
||||||
$$(eval $$(call PARSE_ALL_KEYBOARDS))
|
$$(eval $$(call PARSE_ALL_KEYBOARDS))
|
||||||
|
else ifeq ($$(call COMPARE_AND_REMOVE_FROM_RULE,all-avr),true)
|
||||||
|
KEYBOARD_RULE=all
|
||||||
|
REQUIRE_PLATFORM_KEY := avr
|
||||||
|
$$(eval $$(call PARSE_ALL_KEYBOARDS))
|
||||||
|
else ifeq ($$(call COMPARE_AND_REMOVE_FROM_RULE,all-chibios),true)
|
||||||
|
KEYBOARD_RULE=all
|
||||||
|
REQUIRE_PLATFORM_KEY := chibios
|
||||||
|
$$(eval $$(call PARSE_ALL_KEYBOARDS))
|
||||||
|
else ifeq ($$(call COMPARE_AND_REMOVE_FROM_RULE,all-arm_atsam),true)
|
||||||
|
KEYBOARD_RULE=all
|
||||||
|
REQUIRE_PLATFORM_KEY := arm_atsam
|
||||||
|
$$(eval $$(call PARSE_ALL_KEYBOARDS))
|
||||||
else ifeq ($$(call COMPARE_AND_REMOVE_FROM_RULE,test),true)
|
else ifeq ($$(call COMPARE_AND_REMOVE_FROM_RULE,test),true)
|
||||||
$$(eval $$(call PARSE_TEST))
|
$$(eval $$(call PARSE_TEST))
|
||||||
# If the rule starts with the name of a known keyboard, then continue
|
# If the rule starts with the name of a known keyboard, then continue
|
||||||
|
@ -447,7 +460,7 @@ define PARSE_KEYMAP
|
||||||
# Format it in bold
|
# Format it in bold
|
||||||
KB_SP := $(BOLD)$$(KB_SP)$(NO_COLOR)
|
KB_SP := $(BOLD)$$(KB_SP)$(NO_COLOR)
|
||||||
# Specify the variables that we are passing forward to submake
|
# Specify the variables that we are passing forward to submake
|
||||||
MAKE_VARS := KEYBOARD=$$(CURRENT_KB) KEYMAP=$$(CURRENT_KM)
|
MAKE_VARS := KEYBOARD=$$(CURRENT_KB) KEYMAP=$$(CURRENT_KM) REQUIRE_PLATFORM_KEY=$$(REQUIRE_PLATFORM_KEY)
|
||||||
# And the first part of the make command
|
# And the first part of the make command
|
||||||
MAKE_CMD := $$(MAKE) -r -R -C $(ROOT_DIR) -f build_keyboard.mk $$(MAKE_TARGET)
|
MAKE_CMD := $$(MAKE) -r -R -C $(ROOT_DIR) -f build_keyboard.mk $$(MAKE_TARGET)
|
||||||
# The message to display
|
# The message to display
|
||||||
|
@ -466,6 +479,8 @@ define BUILD
|
||||||
LOG=$$$$($$(MAKE_CMD) $$(MAKE_VARS) SILENT=true 2>&1) ; \
|
LOG=$$$$($$(MAKE_CMD) $$(MAKE_VARS) SILENT=true 2>&1) ; \
|
||||||
if [ $$$$? -gt 0 ]; \
|
if [ $$$$? -gt 0 ]; \
|
||||||
then $$(PRINT_ERROR_PLAIN); \
|
then $$(PRINT_ERROR_PLAIN); \
|
||||||
|
elif [ "$$$$LOG" = "skipped" ] ; \
|
||||||
|
then $$(PRINT_SKIPPED_PLAIN); \
|
||||||
elif [ "$$$$LOG" != "" ] ; \
|
elif [ "$$$$LOG" != "" ] ; \
|
||||||
then $$(PRINT_WARNING_PLAIN); \
|
then $$(PRINT_WARNING_PLAIN); \
|
||||||
else \
|
else \
|
||||||
|
@ -637,12 +652,13 @@ else
|
||||||
endif
|
endif
|
||||||
ifndef SKIP_VERSION
|
ifndef SKIP_VERSION
|
||||||
BUILD_DATE := $(shell date +"%Y-%m-%d-%H:%M:%S")
|
BUILD_DATE := $(shell date +"%Y-%m-%d-%H:%M:%S")
|
||||||
|
else
|
||||||
|
BUILD_DATE := 2020-01-01-00:00:00
|
||||||
|
endif
|
||||||
|
|
||||||
$(shell echo '#define QMK_VERSION "$(GIT_VERSION)"' > $(ROOT_DIR)/quantum/version.h)
|
$(shell echo '#define QMK_VERSION "$(GIT_VERSION)"' > $(ROOT_DIR)/quantum/version.h)
|
||||||
$(shell echo '#define QMK_BUILDDATE "$(BUILD_DATE)"' >> $(ROOT_DIR)/quantum/version.h)
|
$(shell echo '#define QMK_BUILDDATE "$(BUILD_DATE)"' >> $(ROOT_DIR)/quantum/version.h)
|
||||||
$(shell echo '#define CHIBIOS_VERSION "$(CHIBIOS_VERSION)"' >> $(ROOT_DIR)/quantum/version.h)
|
$(shell echo '#define CHIBIOS_VERSION "$(CHIBIOS_VERSION)"' >> $(ROOT_DIR)/quantum/version.h)
|
||||||
$(shell echo '#define CHIBIOS_CONTRIB_VERSION "$(CHIBIOS_CONTRIB_VERSION)"' >> $(ROOT_DIR)/quantum/version.h)
|
$(shell echo '#define CHIBIOS_CONTRIB_VERSION "$(CHIBIOS_CONTRIB_VERSION)"' >> $(ROOT_DIR)/quantum/version.h)
|
||||||
else
|
|
||||||
BUILD_DATE := NA
|
|
||||||
endif
|
|
||||||
|
|
||||||
include $(ROOT_DIR)/testlist.mk
|
include $(ROOT_DIR)/testlist.mk
|
||||||
|
|
|
@ -317,6 +317,13 @@ SRC += $(TMK_COMMON_SRC)
|
||||||
OPT_DEFS += $(TMK_COMMON_DEFS)
|
OPT_DEFS += $(TMK_COMMON_DEFS)
|
||||||
EXTRALDFLAGS += $(TMK_COMMON_LDFLAGS)
|
EXTRALDFLAGS += $(TMK_COMMON_LDFLAGS)
|
||||||
|
|
||||||
|
SKIP_COMPILE := no
|
||||||
|
ifneq ($(REQUIRE_PLATFORM_KEY),)
|
||||||
|
ifneq ($(REQUIRE_PLATFORM_KEY),$(PLATFORM_KEY))
|
||||||
|
SKIP_COMPILE := yes
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
include $(TMK_PATH)/$(PLATFORM_KEY).mk
|
include $(TMK_PATH)/$(PLATFORM_KEY).mk
|
||||||
ifneq ($(strip $(PROTOCOL)),)
|
ifneq ($(strip $(PROTOCOL)),)
|
||||||
include $(TMK_PATH)/protocol/$(strip $(shell echo $(PROTOCOL) | tr '[:upper:]' '[:lower:]')).mk
|
include $(TMK_PATH)/protocol/$(strip $(shell echo $(PROTOCOL) | tr '[:upper:]' '[:lower:]')).mk
|
||||||
|
@ -352,7 +359,13 @@ $(KEYBOARD_OUTPUT)_INC := $(PROJECT_INC) $(GFXINC)
|
||||||
$(KEYBOARD_OUTPUT)_CONFIG := $(PROJECT_CONFIG)
|
$(KEYBOARD_OUTPUT)_CONFIG := $(PROJECT_CONFIG)
|
||||||
|
|
||||||
# Default target.
|
# Default target.
|
||||||
|
ifeq ($(SKIP_COMPILE),no)
|
||||||
all: build check-size
|
all: build check-size
|
||||||
|
else
|
||||||
|
all:
|
||||||
|
echo "skipped" >&2
|
||||||
|
endif
|
||||||
|
|
||||||
build: elf cpfirmware
|
build: elf cpfirmware
|
||||||
check-size: build
|
check-size: build
|
||||||
objs-size: build
|
objs-size: build
|
||||||
|
|
|
@ -49,6 +49,7 @@ endif
|
||||||
|
|
||||||
include common_features.mk
|
include common_features.mk
|
||||||
include $(TMK_PATH)/common.mk
|
include $(TMK_PATH)/common.mk
|
||||||
|
include $(QUANTUM_PATH)/sequencer/tests/rules.mk
|
||||||
include $(QUANTUM_PATH)/serial_link/tests/rules.mk
|
include $(QUANTUM_PATH)/serial_link/tests/rules.mk
|
||||||
ifneq ($(filter $(FULL_TESTS),$(TEST)),)
|
ifneq ($(filter $(FULL_TESTS),$(TEST)),)
|
||||||
include build_full_test.mk
|
include build_full_test.mk
|
||||||
|
|
|
@ -21,4 +21,5 @@ COMMON_VPATH += $(QUANTUM_PATH)/keymap_extras
|
||||||
COMMON_VPATH += $(QUANTUM_PATH)/audio
|
COMMON_VPATH += $(QUANTUM_PATH)/audio
|
||||||
COMMON_VPATH += $(QUANTUM_PATH)/process_keycode
|
COMMON_VPATH += $(QUANTUM_PATH)/process_keycode
|
||||||
COMMON_VPATH += $(QUANTUM_PATH)/api
|
COMMON_VPATH += $(QUANTUM_PATH)/api
|
||||||
|
COMMON_VPATH += $(QUANTUM_PATH)/sequencer
|
||||||
COMMON_VPATH += $(DRIVER_PATH)
|
COMMON_VPATH += $(DRIVER_PATH)
|
||||||
|
|
|
@ -21,6 +21,11 @@ QUANTUM_SRC += \
|
||||||
$(QUANTUM_DIR)/keymap_common.c \
|
$(QUANTUM_DIR)/keymap_common.c \
|
||||||
$(QUANTUM_DIR)/keycode_config.c
|
$(QUANTUM_DIR)/keycode_config.c
|
||||||
|
|
||||||
|
ifeq ($(strip $(DEBUG_MATRIX_SCAN_RATE_ENABLE)), yes)
|
||||||
|
OPT_DEFS += -DDEBUG_MATRIX_SCAN_RATE
|
||||||
|
CONSOLE_ENABLE = yes
|
||||||
|
endif
|
||||||
|
|
||||||
ifeq ($(strip $(API_SYSEX_ENABLE)), yes)
|
ifeq ($(strip $(API_SYSEX_ENABLE)), yes)
|
||||||
OPT_DEFS += -DAPI_SYSEX_ENABLE
|
OPT_DEFS += -DAPI_SYSEX_ENABLE
|
||||||
OPT_DEFS += -DAPI_ENABLE
|
OPT_DEFS += -DAPI_ENABLE
|
||||||
|
@ -39,6 +44,13 @@ ifeq ($(strip $(AUDIO_ENABLE)), yes)
|
||||||
SRC += $(QUANTUM_DIR)/audio/luts.c
|
SRC += $(QUANTUM_DIR)/audio/luts.c
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
ifeq ($(strip $(SEQUENCER_ENABLE)), yes)
|
||||||
|
OPT_DEFS += -DSEQUENCER_ENABLE
|
||||||
|
MUSIC_ENABLE = yes
|
||||||
|
SRC += $(QUANTUM_DIR)/sequencer/sequencer.c
|
||||||
|
SRC += $(QUANTUM_DIR)/process_keycode/process_sequencer.c
|
||||||
|
endif
|
||||||
|
|
||||||
ifeq ($(strip $(MIDI_ENABLE)), yes)
|
ifeq ($(strip $(MIDI_ENABLE)), yes)
|
||||||
OPT_DEFS += -DMIDI_ENABLE
|
OPT_DEFS += -DMIDI_ENABLE
|
||||||
MUSIC_ENABLE = yes
|
MUSIC_ENABLE = yes
|
||||||
|
@ -156,12 +168,14 @@ ifeq ($(strip $(RGBLIGHT_ENABLE)), yes)
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
VALID_MATRIX_TYPES := yes IS31FL3731 IS31FL3733 IS31FL3737 IS31FL3741 WS2812 custom
|
|
||||||
|
|
||||||
LED_MATRIX_ENABLE ?= no
|
LED_MATRIX_ENABLE ?= no
|
||||||
ifneq ($(strip $(LED_MATRIX_ENABLE)), no)
|
VALID_LED_MATRIX_TYPES := IS31FL3731 custom
|
||||||
ifeq ($(filter $(LED_MATRIX_ENABLE),$(VALID_MATRIX_TYPES)),)
|
# TODO: IS31FL3733 IS31FL3737 IS31FL3741
|
||||||
$(error LED_MATRIX_ENABLE="$(LED_MATRIX_ENABLE)" is not a valid matrix type)
|
|
||||||
|
ifeq ($(strip $(LED_MATRIX_ENABLE)), yes)
|
||||||
|
ifeq ($(filter $(LED_MATRIX_DRIVER),$(VALID_LED_MATRIX_TYPES)),)
|
||||||
|
$(error LED_MATRIX_DRIVER="$(LED_MATRIX_DRIVER)" is not a valid matrix type)
|
||||||
else
|
else
|
||||||
BACKLIGHT_ENABLE = yes
|
BACKLIGHT_ENABLE = yes
|
||||||
BACKLIGHT_DRIVER = custom
|
BACKLIGHT_DRIVER = custom
|
||||||
|
@ -169,21 +183,22 @@ ifneq ($(strip $(LED_MATRIX_ENABLE)), no)
|
||||||
SRC += $(QUANTUM_DIR)/led_matrix.c
|
SRC += $(QUANTUM_DIR)/led_matrix.c
|
||||||
SRC += $(QUANTUM_DIR)/led_matrix_drivers.c
|
SRC += $(QUANTUM_DIR)/led_matrix_drivers.c
|
||||||
endif
|
endif
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(strip $(LED_MATRIX_ENABLE)), IS31FL3731)
|
ifeq ($(strip $(LED_MATRIX_DRIVER)), IS31FL3731)
|
||||||
OPT_DEFS += -DIS31FL3731
|
OPT_DEFS += -DIS31FL3731 -DSTM32_I2C -DHAL_USE_I2C=TRUE
|
||||||
COMMON_VPATH += $(DRIVER_PATH)/issi
|
COMMON_VPATH += $(DRIVER_PATH)/issi
|
||||||
SRC += is31fl3731-simple.c
|
SRC += is31fl3731-simple.c
|
||||||
QUANTUM_LIB_SRC += i2c_master.c
|
QUANTUM_LIB_SRC += i2c_master.c
|
||||||
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
RGB_MATRIX_ENABLE ?= no
|
RGB_MATRIX_ENABLE ?= no
|
||||||
|
VALID_RGB_MATRIX_TYPES := IS31FL3731 IS31FL3733 IS31FL3737 IS31FL3741 WS2812 custom
|
||||||
|
|
||||||
ifneq ($(strip $(RGB_MATRIX_ENABLE)), no)
|
ifeq ($(strip $(RGB_MATRIX_ENABLE)), yes)
|
||||||
ifeq ($(filter $(RGB_MATRIX_ENABLE),$(VALID_MATRIX_TYPES)),)
|
ifeq ($(filter $(RGB_MATRIX_DRIVER),$(VALID_RGB_MATRIX_TYPES)),)
|
||||||
$(error RGB_MATRIX_ENABLE="$(RGB_MATRIX_ENABLE)" is not a valid matrix type)
|
$(error "$(RGB_MATRIX_DRIVER)" is not a valid matrix type)
|
||||||
endif
|
endif
|
||||||
OPT_DEFS += -DRGB_MATRIX_ENABLE
|
OPT_DEFS += -DRGB_MATRIX_ENABLE
|
||||||
ifneq (,$(filter $(MCU), atmega16u2 atmega32u2))
|
ifneq (,$(filter $(MCU), atmega16u2 atmega32u2))
|
||||||
# ATmegaxxU2 does not have hardware MUL instruction - lib8tion must be told to use software multiplication routines
|
# ATmegaxxU2 does not have hardware MUL instruction - lib8tion must be told to use software multiplication routines
|
||||||
|
@ -194,51 +209,47 @@ endif
|
||||||
SRC += $(QUANTUM_DIR)/rgb_matrix_drivers.c
|
SRC += $(QUANTUM_DIR)/rgb_matrix_drivers.c
|
||||||
CIE1931_CURVE := yes
|
CIE1931_CURVE := yes
|
||||||
RGB_KEYCODES_ENABLE := yes
|
RGB_KEYCODES_ENABLE := yes
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(strip $(RGB_MATRIX_ENABLE)), yes)
|
ifeq ($(strip $(RGB_MATRIX_DRIVER)), IS31FL3731)
|
||||||
RGB_MATRIX_ENABLE := IS31FL3731
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(strip $(RGB_MATRIX_ENABLE)), IS31FL3731)
|
|
||||||
OPT_DEFS += -DIS31FL3731 -DSTM32_I2C -DHAL_USE_I2C=TRUE
|
OPT_DEFS += -DIS31FL3731 -DSTM32_I2C -DHAL_USE_I2C=TRUE
|
||||||
COMMON_VPATH += $(DRIVER_PATH)/issi
|
COMMON_VPATH += $(DRIVER_PATH)/issi
|
||||||
SRC += is31fl3731.c
|
SRC += is31fl3731.c
|
||||||
QUANTUM_LIB_SRC += i2c_master.c
|
QUANTUM_LIB_SRC += i2c_master.c
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(strip $(RGB_MATRIX_ENABLE)), IS31FL3733)
|
ifeq ($(strip $(RGB_MATRIX_DRIVER)), IS31FL3733)
|
||||||
OPT_DEFS += -DIS31FL3733 -DSTM32_I2C -DHAL_USE_I2C=TRUE
|
OPT_DEFS += -DIS31FL3733 -DSTM32_I2C -DHAL_USE_I2C=TRUE
|
||||||
COMMON_VPATH += $(DRIVER_PATH)/issi
|
COMMON_VPATH += $(DRIVER_PATH)/issi
|
||||||
SRC += is31fl3733.c
|
SRC += is31fl3733.c
|
||||||
QUANTUM_LIB_SRC += i2c_master.c
|
QUANTUM_LIB_SRC += i2c_master.c
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(strip $(RGB_MATRIX_ENABLE)), IS31FL3737)
|
ifeq ($(strip $(RGB_MATRIX_DRIVER)), IS31FL3737)
|
||||||
OPT_DEFS += -DIS31FL3737 -DSTM32_I2C -DHAL_USE_I2C=TRUE
|
OPT_DEFS += -DIS31FL3737 -DSTM32_I2C -DHAL_USE_I2C=TRUE
|
||||||
COMMON_VPATH += $(DRIVER_PATH)/issi
|
COMMON_VPATH += $(DRIVER_PATH)/issi
|
||||||
SRC += is31fl3737.c
|
SRC += is31fl3737.c
|
||||||
QUANTUM_LIB_SRC += i2c_master.c
|
QUANTUM_LIB_SRC += i2c_master.c
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(strip $(RGB_MATRIX_ENABLE)), IS31FL3741)
|
ifeq ($(strip $(RGB_MATRIX_DRIVER)), IS31FL3741)
|
||||||
OPT_DEFS += -DIS31FL3741 -DSTM32_I2C -DHAL_USE_I2C=TRUE
|
OPT_DEFS += -DIS31FL3741 -DSTM32_I2C -DHAL_USE_I2C=TRUE
|
||||||
COMMON_VPATH += $(DRIVER_PATH)/issi
|
COMMON_VPATH += $(DRIVER_PATH)/issi
|
||||||
SRC += is31fl3741.c
|
SRC += is31fl3741.c
|
||||||
QUANTUM_LIB_SRC += i2c_master.c
|
QUANTUM_LIB_SRC += i2c_master.c
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(strip $(RGB_MATRIX_ENABLE)), WS2812)
|
ifeq ($(strip $(RGB_MATRIX_DRIVER)), WS2812)
|
||||||
OPT_DEFS += -DWS2812
|
OPT_DEFS += -DWS2812
|
||||||
WS2812_DRIVER_REQUIRED := yes
|
WS2812_DRIVER_REQUIRED := yes
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(strip $(RGB_MATRIX_CUSTOM_KB)), yes)
|
ifeq ($(strip $(RGB_MATRIX_CUSTOM_KB)), yes)
|
||||||
OPT_DEFS += -DRGB_MATRIX_CUSTOM_KB
|
OPT_DEFS += -DRGB_MATRIX_CUSTOM_KB
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(strip $(RGB_MATRIX_CUSTOM_USER)), yes)
|
ifeq ($(strip $(RGB_MATRIX_CUSTOM_USER)), yes)
|
||||||
OPT_DEFS += -DRGB_MATRIX_CUSTOM_USER
|
OPT_DEFS += -DRGB_MATRIX_CUSTOM_USER
|
||||||
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(strip $(RGB_KEYCODES_ENABLE)), yes)
|
ifeq ($(strip $(RGB_KEYCODES_ENABLE)), yes)
|
||||||
|
@ -444,11 +455,14 @@ ifeq ($(strip $(SPLIT_KEYBOARD)), yes)
|
||||||
# Functions added via QUANTUM_LIB_SRC are only included in the final binary if they're called.
|
# Functions added via QUANTUM_LIB_SRC are only included in the final binary if they're called.
|
||||||
# Unused functions are pruned away, which is why we can add multiple drivers here without bloat.
|
# Unused functions are pruned away, which is why we can add multiple drivers here without bloat.
|
||||||
ifeq ($(PLATFORM),AVR)
|
ifeq ($(PLATFORM),AVR)
|
||||||
|
ifneq ($(NO_I2C),yes)
|
||||||
QUANTUM_LIB_SRC += i2c_master.c \
|
QUANTUM_LIB_SRC += i2c_master.c \
|
||||||
i2c_slave.c
|
i2c_slave.c
|
||||||
endif
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
SERIAL_DRIVER ?= bitbang
|
SERIAL_DRIVER ?= bitbang
|
||||||
|
OPT_DEFS += -DSERIAL_DRIVER_$(strip $(shell echo $(SERIAL_DRIVER) | tr '[:lower:]' '[:upper:]'))
|
||||||
ifeq ($(strip $(SERIAL_DRIVER)), bitbang)
|
ifeq ($(strip $(SERIAL_DRIVER)), bitbang)
|
||||||
QUANTUM_LIB_SRC += serial.c
|
QUANTUM_LIB_SRC += serial.c
|
||||||
else
|
else
|
||||||
|
|
150
docs/ChangeLog/20201128.md
Normal file
150
docs/ChangeLog/20201128.md
Normal file
|
@ -0,0 +1,150 @@
|
||||||
|
# QMK Breaking Change - 2020 Nov 28 Changelog
|
||||||
|
|
||||||
|
Four times a year QMK runs a process for merging Breaking Changes. A Breaking Change is any change which modifies how QMK behaves in a way that is incompatible or potentially dangerous. We limit these changes to 4 times per year so that users can have confidence that updating their QMK tree will not break their keymaps.
|
||||||
|
|
||||||
|
|
||||||
|
## Changes Requiring User Action :id=changes-requiring-user-action
|
||||||
|
|
||||||
|
### Relocated Keyboards :id-relocated-keyboards
|
||||||
|
|
||||||
|
#### Reduce Helix keyboard build variation ([#8669](https://github.com/qmk/qmk_firmware/pull/8669))
|
||||||
|
|
||||||
|
The build commands for the Helix keyboard are:
|
||||||
|
|
||||||
|
```
|
||||||
|
make <helix_build_name>:<keymap_name>
|
||||||
|
```
|
||||||
|
|
||||||
|
For `<helix_build_name>`, specify the one in the rightmost column of the table below, such as `helix`,` helix/pico`.
|
||||||
|
|
||||||
|
| before Oct 17 2019 | Oct 17 2019 | Mar 10 2020 | Nov 28 2020 |
|
||||||
|
| ---------------------|-------------------------|-------------------------| ------------------------|
|
||||||
|
| helix/rev1 | helix/rev1 | helix/rev1 | helix/rev1 |
|
||||||
|
| helix/pico | helix/pico | helix/pico | helix/pico |
|
||||||
|
| | helix/pico/back | helix/pico/back | helix/pico/back |
|
||||||
|
| | helix/pico/under | helix/pico/under | helix/pico/under |
|
||||||
|
| | | helix/pico/sc | -- |
|
||||||
|
| | | helix/pico/sc/back | helix/pico/sc |
|
||||||
|
| | | helix/pico/sc/under | -- |
|
||||||
|
| helix/rev2 (=helix) | helix/rev2 (=helix) | helix/rev2 (=helix) | -- |
|
||||||
|
| | helix/rev2/back | helix/rev2/back | -- |
|
||||||
|
| | helix/rev2/back/oled | helix/rev2/back/oled | ( --> helix/rev2/back) |
|
||||||
|
| | helix/rev2/oled | helix/rev2/oled | helix/rev2 (=helix) |
|
||||||
|
| | helix/rev2/oled/back | helix/rev2/oled/back | helix/rev2/back |
|
||||||
|
| | helix/rev2/oled/under | helix/rev2/oled/under | helix/rev2/under |
|
||||||
|
| | | helix/rev2/sc | -- |
|
||||||
|
| | | helix/rev2/sc/back | -- |
|
||||||
|
| | | helix/rev2/sc/oled | -- |
|
||||||
|
| | | helix/rev2/sc/oledback | helix/rev2/sc |
|
||||||
|
| | | helix/rev2/sc/oledunder | -- |
|
||||||
|
| | | helix/rev2/sc/under | -- |
|
||||||
|
| | helix/rev2/under | helix/rev2/under | -- |
|
||||||
|
| | helix/rev2/under/oled | helix/rev2/under/oled | ( --> helix/rev2/under) |
|
||||||
|
|
||||||
|
#### Update the Speedo firmware for v3.0 ([#10657](https://github.com/qmk/qmk_firmware/pull/10657))
|
||||||
|
|
||||||
|
The Speedo keyboard has moved to `cozykeys/speedo/v2` as the designer prepares to release the Speedo v3.0.
|
||||||
|
|
||||||
|
| Previous Name | New Name |
|
||||||
|
| :------------ | :------------------------- |
|
||||||
|
| speedo | cozykeys/speedo/v2 |
|
||||||
|
| -- | cozykeys/speedo/v3 **new** |
|
||||||
|
|
||||||
|
#### Maartenwut/Maarten name change to evyd13/Evy ([#10274](https://github.com/qmk/qmk_firmware/pull/10274))
|
||||||
|
|
||||||
|
Maartenwut has rebranded as @evyd13, and all released Maartenwut boards have moved.
|
||||||
|
|
||||||
|
| Previous Name | New Name |
|
||||||
|
| :--------------------- | :----------------- |
|
||||||
|
| maartenwut/atom47/rev2 | evyd13/atom47/rev2 |
|
||||||
|
| maartenwut/atom47/rev3 | evyd13/atom47/rev3 |
|
||||||
|
| maartenwut/eon40 | evyd13/eon40 |
|
||||||
|
| maartenwut/eon65 | evyd13/eon65 |
|
||||||
|
| maartenwut/eon75 | evyd13/eon75 |
|
||||||
|
| maartenwut/eon87 | evyd13/eon87 |
|
||||||
|
| maartenwut/eon95 | evyd13/eon95 |
|
||||||
|
| maartenwut/gh80_1800 | evyd13/gh80_1800 |
|
||||||
|
| maartenwut/gh80_3700 | evyd13/gh80_3700 |
|
||||||
|
| maartenwut/minitomic | evyd13/minitomic |
|
||||||
|
| maartenwut/mx5160 | evyd13/mx5160 |
|
||||||
|
| maartenwut/nt660 | evyd13/nt660 |
|
||||||
|
| maartenwut/omrontkl | evyd13/omrontkl |
|
||||||
|
| maartenwut/plain60 | evyd13/plain60 |
|
||||||
|
| maartenwut/pockettype | evyd13/pockettype |
|
||||||
|
| maartenwut/quackfire | evyd13/quackfire |
|
||||||
|
| maartenwut/solheim68 | evyd13/solheim68 |
|
||||||
|
| maartenwut/ta65 | evyd13/ta65 |
|
||||||
|
| maartenwut/wasdat | evyd13/wasdat |
|
||||||
|
| maartenwut/wasdat_code | evyd13/wasdat_code |
|
||||||
|
| maartenwut/wonderland | evyd13/wonderland |
|
||||||
|
|
||||||
|
#### Xelus Valor and Dawn60 Refactors ([#10512](https://github.com/qmk/qmk_firmware/pull/10512), [#10584](https://github.com/qmk/qmk_firmware/pull/10584))
|
||||||
|
|
||||||
|
The Valor and Dawn60 keyboards by Xelus22 both now require their revisions to be specified when compiling.
|
||||||
|
|
||||||
|
| Previous Name | New Name |
|
||||||
|
| :------------ | :---------------- |
|
||||||
|
| xelus/dawn60 | xelus/dawn60/rev1 |
|
||||||
|
| xelus/valor | xelus/valor/rev1 |
|
||||||
|
|
||||||
|
|
||||||
|
### Updated Keyboard Codebases :id=keyboard-updates
|
||||||
|
|
||||||
|
#### AEboards EXT65 Refactor ([#10820](https://github.com/qmk/qmk_firmware/pull/10820))
|
||||||
|
|
||||||
|
The EXT65 codebase has been reworked so keymaps can be used with either revision.
|
||||||
|
|
||||||
|
|
||||||
|
## Core Changes :id=core-changes
|
||||||
|
|
||||||
|
### Fixes :id=core-fixes
|
||||||
|
|
||||||
|
* Reconnect the USB if users wake up a computer from the keyboard to restore the USB state ([#10088](https://github.com/qmk/qmk_firmware/pull/10088))
|
||||||
|
* Fix cursor position bug in oled_write_raw functions ([#10800](https://github.com/qmk/qmk_firmware/pull/10800))
|
||||||
|
|
||||||
|
### Additions and Enhancements :id=core-additions
|
||||||
|
|
||||||
|
* Allow MATRIX_ROWS to be greater than 32 ([#10183](https://github.com/qmk/qmk_firmware/pull/10183))
|
||||||
|
* Add support for soft serial to ATmega32U2 ([#10204](https://github.com/qmk/qmk_firmware/pull/10204))
|
||||||
|
* Allow direct control of MIDI velocity value ([#9940](https://github.com/qmk/qmk_firmware/pull/9940))
|
||||||
|
* Joystick 16-bit support ([#10439](https://github.com/qmk/qmk_firmware/pull/10439))
|
||||||
|
* Allow encoder resolutions to be set per encoder ([#10259](https://github.com/qmk/qmk_firmware/pull/10259))
|
||||||
|
* Share button state from mousekey to pointing_device ([#10179](https://github.com/qmk/qmk_firmware/pull/10179))
|
||||||
|
* Add advanced/efficient RGB Matrix Indicators ([#8564](https://github.com/qmk/qmk_firmware/pull/8564))
|
||||||
|
* OLED display update interval support ([#10388](https://github.com/qmk/qmk_firmware/pull/10388))
|
||||||
|
* Per-Key Retro Tapping ([#10622](https://github.com/qmk/qmk_firmware/pull/10622))
|
||||||
|
* Allow backlight duty cycle limit ([#10260](https://github.com/qmk/qmk_firmware/pull/10260))
|
||||||
|
* Add step sequencer feature ([#9703](https://github.com/qmk/qmk_firmware/pull/9703))
|
||||||
|
* Added `add_oneshot_mods` & `del_oneshot_mods` ([#10549](https://github.com/qmk/qmk_firmware/pull/10549))
|
||||||
|
* Add AT90USB support for serial.c ([#10706](https://github.com/qmk/qmk_firmware/pull/10706))
|
||||||
|
* Auto shift: support repeats and early registration (#9826)
|
||||||
|
|
||||||
|
### Clean-ups and Optimizations :id=core-optimizations
|
||||||
|
|
||||||
|
* Haptic and solenoid cleanup ([#9700](https://github.com/qmk/qmk_firmware/pull/9700))
|
||||||
|
* XD75 cleanup ([#10524](https://github.com/qmk/qmk_firmware/pull/10524))
|
||||||
|
* Minor change to behavior allowing display updates to continue between task ticks ([#10750](https://github.com/qmk/qmk_firmware/pull/10750))
|
||||||
|
* Change some GPIO manipulations in matrix.c to be atomic ([#10491](https://github.com/qmk/qmk_firmware/pull/10491))
|
||||||
|
* combine repeated lines of code for ATmega32U2, ATmega16U2, ATmega328 and ATmega328P ([#10837](https://github.com/qmk/qmk_firmware/pull/10837))
|
||||||
|
* Remove references to HD44780 ([#10735](https://github.com/qmk/qmk_firmware/pull/10735))
|
||||||
|
|
||||||
|
|
||||||
|
## QMK Infrastructure and Internals :id=qmk-internals
|
||||||
|
|
||||||
|
* Add ability to build a subset of all keyboards based on platform. ([#10420](https://github.com/qmk/qmk_firmware/pull/10420))
|
||||||
|
* Initialise EEPROM drivers at startup, instead of upon first execution ([#10438](https://github.com/qmk/qmk_firmware/pull/10438))
|
||||||
|
* Make bootloader_jump weak for ChibiOS ([#10417](https://github.com/qmk/qmk_firmware/pull/10417))
|
||||||
|
* Support for STM32 GPIOF,G,H,I,J,K ([#10206](https://github.com/qmk/qmk_firmware/pull/10206))
|
||||||
|
* Add milc as a dependency and remove the installed milc ([#10563](https://github.com/qmk/qmk_firmware/pull/10563))
|
||||||
|
* ChibiOS upgrade: early init conversions ([#10214](https://github.com/qmk/qmk_firmware/pull/10214))
|
||||||
|
* ChibiOS upgrade: configuration file migrator ([#9952](https://github.com/qmk/qmk_firmware/pull/9952))
|
||||||
|
* Add definition based on currently-selected serial driver. ([#10716](https://github.com/qmk/qmk_firmware/pull/10716))
|
||||||
|
* Allow for modification of output RGB values when using rgblight/rgb_matrix. ([#10638](https://github.com/qmk/qmk_firmware/pull/10638))
|
||||||
|
* Allow keyboards/keymaps to execute code at each main loop iteration ([#10530](https://github.com/qmk/qmk_firmware/pull/10530))
|
||||||
|
* qmk cformat ([#10767](https://github.com/qmk/qmk_firmware/pull/10767))
|
||||||
|
* Add a Make variable to easily enable DEBUG_MATRIX_SCAN_RATE on the command line ([#10824](https://github.com/qmk/qmk_firmware/pull/10824))
|
||||||
|
* update Chibios OS USB for the OTG driver ([#8893](https://github.com/qmk/qmk_firmware/pull/8893))
|
||||||
|
* Fixup version.h writing when using `SKIP_VERSION=yes` ([#10972](https://github.com/qmk/qmk_firmware/pull/10972), [#10974](https://github.com/qmk/qmk_firmware/pull/10974))
|
||||||
|
* Rename ledmatrix.h to match .c file ([#7949](https://github.com/qmk/qmk_firmware/pull/7949))
|
||||||
|
* Split RGB_MATRIX_ENABLE into _ENABLE and _DRIVER ([#10231](https://github.com/qmk/qmk_firmware/pull/10231))
|
||||||
|
* Split LED_MATRIX_ENABLE into _ENABLE and _DRIVER ([#10840](https://github.com/qmk/qmk_firmware/pull/10840))
|
|
@ -80,6 +80,7 @@
|
||||||
* [One Shot Keys](one_shot_keys.md)
|
* [One Shot Keys](one_shot_keys.md)
|
||||||
* [Pointing Device](feature_pointing_device.md)
|
* [Pointing Device](feature_pointing_device.md)
|
||||||
* [Raw HID](feature_rawhid.md)
|
* [Raw HID](feature_rawhid.md)
|
||||||
|
* [Sequencer](feature_sequencer.md)
|
||||||
* [Swap Hands](feature_swap_hands.md)
|
* [Swap Hands](feature_swap_hands.md)
|
||||||
* [Tap Dance](feature_tap_dance.md)
|
* [Tap Dance](feature_tap_dance.md)
|
||||||
* [Tap-Hold Configuration](tap_hold.md)
|
* [Tap-Hold Configuration](tap_hold.md)
|
||||||
|
@ -119,6 +120,7 @@
|
||||||
* [Overview](breaking_changes.md)
|
* [Overview](breaking_changes.md)
|
||||||
* [My Pull Request Was Flagged](breaking_changes_instructions.md)
|
* [My Pull Request Was Flagged](breaking_changes_instructions.md)
|
||||||
* History
|
* History
|
||||||
|
* [2020 Nov 28](ChangeLog/20201128.md)
|
||||||
* [2020 Aug 29](ChangeLog/20200829.md)
|
* [2020 Aug 29](ChangeLog/20200829.md)
|
||||||
* [2020 May 30](ChangeLog/20200530.md)
|
* [2020 May 30](ChangeLog/20200530.md)
|
||||||
* [2020 Feb 29](ChangeLog/20200229.md)
|
* [2020 Feb 29](ChangeLog/20200229.md)
|
||||||
|
|
|
@ -6,6 +6,7 @@ The breaking change period is when we will merge PR's that change QMK in dangero
|
||||||
|
|
||||||
## What has been included in past Breaking Changes?
|
## What has been included in past Breaking Changes?
|
||||||
|
|
||||||
|
* [2020 Nov 28](ChangeLog/20201128.md)
|
||||||
* [2020 Aug 29](ChangeLog/20200829.md)
|
* [2020 Aug 29](ChangeLog/20200829.md)
|
||||||
* [2020 May 30](ChangeLog/20200530.md)
|
* [2020 May 30](ChangeLog/20200530.md)
|
||||||
* [2020 Feb 29](ChangeLog/20200229.md)
|
* [2020 Feb 29](ChangeLog/20200229.md)
|
||||||
|
@ -13,16 +14,16 @@ The breaking change period is when we will merge PR's that change QMK in dangero
|
||||||
|
|
||||||
## When is the next Breaking Change?
|
## When is the next Breaking Change?
|
||||||
|
|
||||||
The next Breaking Change is scheduled for November 28, 2020.
|
The next Breaking Change is scheduled for February 27, 2021.
|
||||||
|
|
||||||
### Important Dates
|
### Important Dates
|
||||||
|
|
||||||
* [x] 2020 Aug 29 - `develop` is created. It will be rebased weekly.
|
* [x] 2020 Nov 28 - `develop` is created. Each push to `master` is subsequently merged to `develop`
|
||||||
* [ ] 2020 Oct 31 - `develop` closed to new PR's.
|
* [ ] 2021 Jan 30 - `develop` closed to new PR's.
|
||||||
* [ ] 2020 Oct 31 - Call for testers.
|
* [ ] 2021 Jan 30 - Call for testers.
|
||||||
* [ ] 2020 Nov 26 - `master` is locked, no PR's merged.
|
* [ ] 2021 Feb 25 - `master` is locked, no PR's merged.
|
||||||
* [ ] 2020 Nov 28 - Merge `develop` to `master`.
|
* [ ] 2021 Feb 27 - Merge `develop` to `master`.
|
||||||
* [ ] 2020 Nov 28 - `master` is unlocked. PR's can be merged again.
|
* [ ] 2021 Feb 27 - `master` is unlocked. PR's can be merged again.
|
||||||
|
|
||||||
## What changes will be included?
|
## What changes will be included?
|
||||||
|
|
||||||
|
@ -39,21 +40,6 @@ Criteria for acceptance:
|
||||||
|
|
||||||
This section documents various processes we use when running the Breaking Changes process.
|
This section documents various processes we use when running the Breaking Changes process.
|
||||||
|
|
||||||
## Rebase `develop` from `master`
|
|
||||||
|
|
||||||
This is run every Friday while `develop` is open.
|
|
||||||
|
|
||||||
Process:
|
|
||||||
|
|
||||||
```
|
|
||||||
cd qmk_firmware
|
|
||||||
git checkout master
|
|
||||||
git pull --ff-only
|
|
||||||
git checkout develop
|
|
||||||
git rebase master
|
|
||||||
git push --force
|
|
||||||
```
|
|
||||||
|
|
||||||
## Creating the `develop` branch
|
## Creating the `develop` branch
|
||||||
|
|
||||||
This happens immediately after the previous `develop` branch is merged.
|
This happens immediately after the previous `develop` branch is merged.
|
||||||
|
|
|
@ -135,6 +135,8 @@ If you define these options you will enable the associated feature, which may in
|
||||||
* `#define RETRO_TAPPING`
|
* `#define RETRO_TAPPING`
|
||||||
* tap anyway, even after TAPPING_TERM, if there was no other key interruption between press and release
|
* tap anyway, even after TAPPING_TERM, if there was no other key interruption between press and release
|
||||||
* See [Retro Tapping](tap_hold.md#retro-tapping) for details
|
* See [Retro Tapping](tap_hold.md#retro-tapping) for details
|
||||||
|
* `#define RETRO_TAPPING_PER_KEY`
|
||||||
|
* enables handling for per key `RETRO_TAPPING` settings
|
||||||
* `#define TAPPING_TOGGLE 2`
|
* `#define TAPPING_TOGGLE 2`
|
||||||
* how many taps before triggering the toggle
|
* how many taps before triggering the toggle
|
||||||
* `#define PERMISSIVE_HOLD`
|
* `#define PERMISSIVE_HOLD`
|
||||||
|
|
|
@ -185,6 +185,14 @@ This function gets called at every matrix scan, which is basically as often as t
|
||||||
|
|
||||||
You should use this function if you need custom matrix scanning code. It can also be used for custom status output (such as LEDs or a display) or other functionality that you want to trigger regularly even when the user isn't typing.
|
You should use this function if you need custom matrix scanning code. It can also be used for custom status output (such as LEDs or a display) or other functionality that you want to trigger regularly even when the user isn't typing.
|
||||||
|
|
||||||
|
# Keyboard housekeeping
|
||||||
|
|
||||||
|
* Keyboard/Revision: `void housekeeping_task_kb(void)`
|
||||||
|
* Keymap: `void housekeeping_task_user(void)`
|
||||||
|
|
||||||
|
This function gets called at the end of all QMK processing, before starting the next iteration. You can safely assume that QMK has dealt with the last matrix scan at the time that these functions are invoked -- layer states have been updated, USB reports have been sent, LEDs have been updated, and displays have been drawn.
|
||||||
|
|
||||||
|
Similar to `matrix_scan_*`, these are called as often as the MCU can handle. To keep your board responsive, it's suggested to do as little as possible during these function calls, potentially throtting their behaviour if you do indeed require implementing something special.
|
||||||
|
|
||||||
# Keyboard Idling/Wake Code
|
# Keyboard Idling/Wake Code
|
||||||
|
|
||||||
|
|
|
@ -15,25 +15,31 @@ problem.
|
||||||
When you tap a key, it stays depressed for a short period of time before it is
|
When you tap a key, it stays depressed for a short period of time before it is
|
||||||
then released. This depressed time is a different length for everyone. Auto Shift
|
then released. This depressed time is a different length for everyone. Auto Shift
|
||||||
defines a constant `AUTO_SHIFT_TIMEOUT` which is typically set to twice your
|
defines a constant `AUTO_SHIFT_TIMEOUT` which is typically set to twice your
|
||||||
normal pressed state time. When you press a key, a timer starts and then stops
|
normal pressed state time. When you press a key, a timer starts, and if you
|
||||||
when you release the key. If the time depressed is greater than or equal to the
|
have not released the key after the `AUTO_SHIFT_TIMEOUT` period, then a shifted
|
||||||
`AUTO_SHIFT_TIMEOUT`, then a shifted version of the key is emitted. If the time
|
version of the key is emitted. If the time is less than the `AUTO_SHIFT_TIMEOUT`
|
||||||
is less than the `AUTO_SHIFT_TIMEOUT` time, then the normal state is emitted.
|
time, or you press another key, then the normal state is emitted.
|
||||||
|
|
||||||
|
If `AUTO_SHIFT_REPEAT` is defined, there is keyrepeat support. Holding the key
|
||||||
|
down will repeat the shifted key, though this can be disabled with
|
||||||
|
`AUTO_SHIFT_NO_AUTO_REPEAT`. If you want to repeat the normal key, then tap it
|
||||||
|
once then immediately (within `TAPPING_TERM`) hold it down again (this works
|
||||||
|
with the shifted value as well if auto-repeat is disabled).
|
||||||
|
|
||||||
## Are There Limitations to Auto Shift?
|
## Are There Limitations to Auto Shift?
|
||||||
|
|
||||||
Yes, unfortunately.
|
Yes, unfortunately.
|
||||||
|
|
||||||
1. Key repeat will cease to work. For example, before if you wanted 20 'a'
|
You will have characters that are shifted when you did not intend on shifting, and
|
||||||
characters, you could press and hold the 'a' key for a second or two. This no
|
other characters you wanted shifted, but were not. This simply comes down to
|
||||||
longer works with Auto Shift because it is timing your depressed time instead
|
practice. As we get in a hurry, we think we have hit the key long enough for a
|
||||||
of emitting a depressed key state to your operating system.
|
shifted version, but we did not. On the other hand, we may think we are tapping
|
||||||
2. You will have characters that are shifted when you did not intend on shifting, and
|
the keys, but really we have held it for a little longer than anticipated.
|
||||||
other characters you wanted shifted, but were not. This simply comes down to
|
|
||||||
practice. As we get in a hurry, we think we have hit the key long enough
|
Additionally, with keyrepeat the desired shift state can get mixed up. It will
|
||||||
for a shifted version, but we did not. On the other hand, we may think we are
|
always 'belong' to the last key pressed. For example, keyrepeating a capital
|
||||||
tapping the keys, but really we have held it for a little longer than
|
and then tapping something lowercase (whether or not it's an Auto Shift key)
|
||||||
anticipated.
|
will result in the capital's *key* still being held, but shift not.
|
||||||
|
|
||||||
## How Do I Enable Auto Shift?
|
## How Do I Enable Auto Shift?
|
||||||
|
|
||||||
|
@ -103,6 +109,14 @@ Do not Auto Shift numeric keys, zero through nine.
|
||||||
|
|
||||||
Do not Auto Shift alpha characters, which include A through Z.
|
Do not Auto Shift alpha characters, which include A through Z.
|
||||||
|
|
||||||
|
### AUTO_SHIFT_REPEAT (simple define)
|
||||||
|
|
||||||
|
Enables keyrepeat.
|
||||||
|
|
||||||
|
### AUTO_SHIFT_NO_AUTO_REPEAT (simple define)
|
||||||
|
|
||||||
|
Disables automatically keyrepeating when `AUTO_SHIFT_TIMEOUT` is exceeded.
|
||||||
|
|
||||||
## Using Auto Shift Setup
|
## Using Auto Shift Setup
|
||||||
|
|
||||||
This will enable you to define three keys temporarily to increase, decrease and report your `AUTO_SHIFT_TIMEOUT`.
|
This will enable you to define three keys temporarily to increase, decrease and report your `AUTO_SHIFT_TIMEOUT`.
|
||||||
|
|
|
@ -62,14 +62,15 @@ Valid driver values are `pwm`, `software`, `custom` or `no`. See below for help
|
||||||
|
|
||||||
To configure the backlighting, `#define` these in your `config.h`:
|
To configure the backlighting, `#define` these in your `config.h`:
|
||||||
|
|
||||||
|Define |Default |Description |
|
| Define | Default | Description |
|
||||||
|---------------------|-------------|-------------------------------------------------------------------------------------|
|
|------------------------|---------------|-------------------------------------------------------------------------------------------------------------------|
|
||||||
|`BACKLIGHT_PIN` |*Not defined*|The pin that controls the LED(s) |
|
| `BACKLIGHT_PIN` | *Not defined* | The pin that controls the LED(s) |
|
||||||
|`BACKLIGHT_LEVELS` |`3` |The number of brightness levels (maximum 31 excluding off) |
|
| `BACKLIGHT_LEVELS` | `3` | The number of brightness levels (maximum 31 excluding off) |
|
||||||
|`BACKLIGHT_CAPS_LOCK`|*Not defined*|Enable Caps Lock indicator using backlight (for keyboards without dedicated LED) |
|
| `BACKLIGHT_CAPS_LOCK` | *Not defined* | Enable Caps Lock indicator using backlight (for keyboards without dedicated LED) |
|
||||||
|`BACKLIGHT_BREATHING`|*Not defined*|Enable backlight breathing, if supported |
|
| `BACKLIGHT_BREATHING` | *Not defined* | Enable backlight breathing, if supported |
|
||||||
|`BREATHING_PERIOD` |`6` |The length of one backlight "breath" in seconds |
|
| `BREATHING_PERIOD` | `6` | The length of one backlight "breath" in seconds |
|
||||||
|`BACKLIGHT_ON_STATE` |`1` |The state of the backlight pin when the backlight is "on" - `1` for high, `0` for low|
|
| `BACKLIGHT_ON_STATE` | `1` | The state of the backlight pin when the backlight is "on" - `1` for high, `0` for low |
|
||||||
|
| `BACKLIGHT_LIMIT_VAL ` | `255` | The maximum duty cycle of the backlight -- `255` allows for full brightness, any lower will decrease the maximum. |
|
||||||
|
|
||||||
Unless you are designing your own keyboard, you generally should not need to change the `BACKLIGHT_PIN` or `BACKLIGHT_ON_STATE`.
|
Unless you are designing your own keyboard, you generally should not need to change the `BACKLIGHT_PIN` or `BACKLIGHT_ON_STATE`.
|
||||||
|
|
||||||
|
|
|
@ -32,13 +32,20 @@ Additionally, the resolution, which defines how many pulses the encoder register
|
||||||
#define ENCODER_RESOLUTION 4
|
#define ENCODER_RESOLUTION 4
|
||||||
```
|
```
|
||||||
|
|
||||||
|
It can also be defined per-encoder, by instead defining:
|
||||||
|
|
||||||
|
```c
|
||||||
|
#define ENCODER_RESOLUTIONS { 4, 2 }
|
||||||
|
```
|
||||||
|
|
||||||
## Split Keyboards
|
## Split Keyboards
|
||||||
|
|
||||||
If you are using different pinouts for the encoders on each half of a split keyboard, you can define the pinout for the right half like this:
|
If you are using different pinouts for the encoders on each half of a split keyboard, you can define the pinout (and optionally, resolutions) for the right half like this:
|
||||||
|
|
||||||
```c
|
```c
|
||||||
#define ENCODERS_PAD_A_RIGHT { encoder1a, encoder2a }
|
#define ENCODERS_PAD_A_RIGHT { encoder1a, encoder2a }
|
||||||
#define ENCODERS_PAD_B_RIGHT { encoder1b, encoder2b }
|
#define ENCODERS_PAD_B_RIGHT { encoder1b, encoder2b }
|
||||||
|
#define ENCODER_RESOLUTIONS_RIGHT { 2, 4 }
|
||||||
```
|
```
|
||||||
|
|
||||||
## Callbacks
|
## Callbacks
|
||||||
|
|
|
@ -43,13 +43,20 @@ First you will need a build a circuit to drive the solenoid through a mosfet as
|
||||||
|
|
||||||
|
|
||||||
| Settings | Default | Description |
|
| Settings | Default | Description |
|
||||||
|--------------------------|---------------|-------------------------------------------------------|
|
|----------------------------|----------------------|-------------------------------------------------------|
|
||||||
|`SOLENOID_PIN` | *Not defined* |Configures the pin that the Solenoid is connected to. |
|
|`SOLENOID_PIN` | *Not defined* |Configures the pin that the Solenoid is connected to. |
|
||||||
|`SOLENOID_DEFAULT_DWELL` | `12` ms |Configures the default dwell time for the solenoid. |
|
|`SOLENOID_DEFAULT_DWELL` | `12` ms |Configures the default dwell time for the solenoid. |
|
||||||
|`SOLENOID_MIN_DWELL` | `4` ms |Sets the lower limit for the dwell. |
|
|`SOLENOID_MIN_DWELL` | `4` ms |Sets the lower limit for the dwell. |
|
||||||
|`SOLENOID_MAX_DWELL` | `100` ms |Sets the upper limit for the dwell. |
|
|`SOLENOID_MAX_DWELL` | `100` ms |Sets the upper limit for the dwell. |
|
||||||
|
|`SOLENOID_DWELL_STEP_SIZE` | `1` ms |The step size to use when `HPT_DWL*` keycodes are sent |
|
||||||
|
|`SOLENOID_DEFAULT_BUZZ` | `0` (disabled) |On HPT_RST buzz is set "on" if this is "1" |
|
||||||
|
|`SOLENOID_BUZZ_ACTUATED` | `SOLENOID_MIN_DWELL` |Actuated-time when the solenoid is in buzz mode |
|
||||||
|
|`SOLENOID_BUZZ_NONACTUATED` | `SOLENOID_MIN_DWELL` |Non-Actuated-time when the solenoid is in buzz mode |
|
||||||
|
|
||||||
?> Dwell time is how long the "plunger" stays activated. The dwell time changes how the solenoid sounds.
|
* If solenoid buzz is off, then dwell time is how long the "plunger" stays activated. The dwell time changes how the solenoid sounds.
|
||||||
|
* If solenoid buzz is on, then dwell time sets the length of the buzz, while `SOLENOID_BUZZ_ACTUATED` and `SOLENOID_BUZZ_NONACTUATED` set the (non-)actuation times withing the buzz period.
|
||||||
|
* With the current implementation, for any of the above time settings, the precision of these settings may be affected by how fast the keyboard is able to scan the matrix.
|
||||||
|
Therefore, if the keyboards scanning routine is slow, it may be preferable to set `SOLENOID_DWELL_STEP_SIZE` to a value slightly smaller than the time it takes to scan the keyboard.
|
||||||
|
|
||||||
Beware that some pins may be powered during bootloader (ie. A13 on the STM32F303 chip) and will result in the solenoid kept in the on state through the whole flashing process. This may overheat and damage the solenoid. If you find that the pin the solenoid is connected to is triggering the solenoid during bootloader/DFU, select another pin.
|
Beware that some pins may be powered during bootloader (ie. A13 on the STM32F303 chip) and will result in the solenoid kept in the on state through the whole flashing process. This may overheat and damage the solenoid. If you find that the pin the solenoid is connected to is triggering the solenoid during bootloader/DFU, select another pin.
|
||||||
|
|
||||||
|
|
|
@ -141,6 +141,12 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Axis Resolution
|
||||||
|
|
||||||
|
By default, the resolution of each axis is 8 bit, giving a range of -127 to +127. If you need higher precision, you can increase it by defining eg. `JOYSTICK_AXES_RESOLUTION 12` in your `config.h`. The resolution must be between 8 and 16.
|
||||||
|
|
||||||
|
Note that the supported AVR MCUs have a 10-bit ADC, and 12-bit for most STM32 MCUs.
|
||||||
|
|
||||||
### Triggering Joystick Buttons
|
### Triggering Joystick Buttons
|
||||||
|
|
||||||
Joystick buttons are normal Quantum keycodes, defined as `JS_BUTTON0` to `JS_BUTTON31`, depending on the number of buttons you have configured.
|
Joystick buttons are normal Quantum keycodes, defined as `JS_BUTTON0` to `JS_BUTTON31`, depending on the number of buttons you have configured.
|
||||||
|
|
|
@ -10,7 +10,8 @@ If you want to use RGB LED's you should use the [RGB Matrix Subsystem](feature_r
|
||||||
|
|
||||||
There is basic support for addressable LED matrix lighting with the I2C IS31FL3731 RGB controller. To enable it, add this to your `rules.mk`:
|
There is basic support for addressable LED matrix lighting with the I2C IS31FL3731 RGB controller. To enable it, add this to your `rules.mk`:
|
||||||
|
|
||||||
LED_MATRIX_ENABLE = IS31FL3731
|
LED_MATRIX_ENABLE = yes
|
||||||
|
LED_MATRIX_DRIVER = IS31FL3731
|
||||||
|
|
||||||
You can use between 1 and 4 IS31FL3731 IC's. Do not specify `LED_DRIVER_ADDR_<N>` defines for IC's that are not present on your keyboard. You can define the following items in `config.h`:
|
You can use between 1 and 4 IS31FL3731 IC's. Do not specify `LED_DRIVER_ADDR_<N>` defines for IC's that are not present on your keyboard. You can define the following items in `config.h`:
|
||||||
|
|
||||||
|
|
|
@ -140,3 +140,7 @@ To use constant speed mode, you must at least define `MK_COMBINED` in your keyma
|
||||||
```c
|
```c
|
||||||
#define MK_COMBINED
|
#define MK_COMBINED
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Use with PS/2 Mouse and Pointing Device
|
||||||
|
|
||||||
|
Mouse keys button state is shared with [PS/2 mouse](feature_ps2_mouse.md) and [pointing device](feature_pointing_device.md) so mouse keys button presses can be used for clicks and drags.
|
||||||
|
|
|
@ -150,6 +150,7 @@ void oled_task_user(void) {
|
||||||
|`OLED_IC` |`OLED_IC_SSD1306`|Set to `OLED_IC_SH1106` if you're using the SH1106 OLED controller. |
|
|`OLED_IC` |`OLED_IC_SSD1306`|Set to `OLED_IC_SH1106` if you're using the SH1106 OLED controller. |
|
||||||
|`OLED_COLUMN_OFFSET` |`0` |(SH1106 only.) Shift output to the right this many pixels.<br />Useful for 128x64 displays centered on a 132x64 SH1106 IC.|
|
|`OLED_COLUMN_OFFSET` |`0` |(SH1106 only.) Shift output to the right this many pixels.<br />Useful for 128x64 displays centered on a 132x64 SH1106 IC.|
|
||||||
|`OLED_BRIGHTNESS` |`255` |The default brightness level of the OLED, from 0 to 255. |
|
|`OLED_BRIGHTNESS` |`255` |The default brightness level of the OLED, from 0 to 255. |
|
||||||
|
|`OLED_UPDATE_INTERVAL` |`0` |Set the time interval for updating the OLED display in ms. This will improve the matrix scan rate. |
|
||||||
|
|
||||||
## 128x64 & Custom sized OLED Displays
|
## 128x64 & Custom sized OLED Displays
|
||||||
|
|
||||||
|
|
|
@ -11,7 +11,8 @@ If you want to use single color LED's you should use the [LED Matrix Subsystem](
|
||||||
There is basic support for addressable RGB matrix lighting with the I2C IS31FL3731 RGB controller. To enable it, add this to your `rules.mk`:
|
There is basic support for addressable RGB matrix lighting with the I2C IS31FL3731 RGB controller. To enable it, add this to your `rules.mk`:
|
||||||
|
|
||||||
```makefile
|
```makefile
|
||||||
RGB_MATRIX_ENABLE = IS31FL3731
|
RGB_MATRIX_ENABLE = yes
|
||||||
|
RGB_MATRIX_DRIVER = IS31FL3731
|
||||||
```
|
```
|
||||||
|
|
||||||
Configure the hardware via your `config.h`:
|
Configure the hardware via your `config.h`:
|
||||||
|
@ -62,7 +63,8 @@ Where `Cx_y` is the location of the LED in the matrix defined by [the datasheet]
|
||||||
There is basic support for addressable RGB matrix lighting with the I2C IS31FL3733 RGB controller. To enable it, add this to your `rules.mk`:
|
There is basic support for addressable RGB matrix lighting with the I2C IS31FL3733 RGB controller. To enable it, add this to your `rules.mk`:
|
||||||
|
|
||||||
```makefile
|
```makefile
|
||||||
RGB_MATRIX_ENABLE = IS31FL3733
|
RGB_MATRIX_ENABLE = yes
|
||||||
|
RGB_MATRIX_DRIVER = IS31FL3733
|
||||||
```
|
```
|
||||||
|
|
||||||
Configure the hardware via your `config.h`:
|
Configure the hardware via your `config.h`:
|
||||||
|
@ -112,7 +114,8 @@ Where `X_Y` is the location of the LED in the matrix defined by [the datasheet](
|
||||||
There is basic support for addressable RGB matrix lighting with a WS2811/WS2812{a,b,c} addressable LED strand. To enable it, add this to your `rules.mk`:
|
There is basic support for addressable RGB matrix lighting with a WS2811/WS2812{a,b,c} addressable LED strand. To enable it, add this to your `rules.mk`:
|
||||||
|
|
||||||
```makefile
|
```makefile
|
||||||
RGB_MATRIX_ENABLE = WS2812
|
RGB_MATRIX_ENABLE = yes
|
||||||
|
RGB_MATRIX_DRIVER = WS2812
|
||||||
```
|
```
|
||||||
|
|
||||||
Configure the hardware via your `config.h`:
|
Configure the hardware via your `config.h`:
|
||||||
|
@ -482,6 +485,14 @@ void rgb_matrix_indicators_kb(void) {
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
In addition, there are the advanced indicator functions. These are aimed at those with heavily customized displays, where rendering every LED per cycle is expensive. Such as some of the "drashna" layouts. This includes a special macro to help make this easier to use: `RGB_MATRIX_INDICATOR_SET_COLOR(i, r, g, b)`.
|
||||||
|
|
||||||
|
```c
|
||||||
|
void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
|
||||||
|
RGB_MATRIX_INDICATOR_SET_COLOR(index, red, green, blue);
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
### Suspended state :id=suspended-state
|
### Suspended state :id=suspended-state
|
||||||
To use the suspend feature, make sure that `#define RGB_DISABLE_WHEN_USB_SUSPENDED true` is added to the `config.h` file.
|
To use the suspend feature, make sure that `#define RGB_DISABLE_WHEN_USB_SUSPENDED true` is added to the `config.h` file.
|
||||||
|
|
||||||
|
|
88
docs/feature_sequencer.md
Normal file
88
docs/feature_sequencer.md
Normal file
|
@ -0,0 +1,88 @@
|
||||||
|
# Sequencer
|
||||||
|
|
||||||
|
Since QMK has experimental support for MIDI, you can now turn your keyboard into a [step sequencer](https://en.wikipedia.org/wiki/Music_sequencer#Step_sequencers)!
|
||||||
|
|
||||||
|
!> **IMPORTANT:** This feature is highly experimental, it has only been tested on a Planck EZ so far. Also, the scope will be limited to support the drum machine use-case to start with.
|
||||||
|
|
||||||
|
## Enable the step sequencer
|
||||||
|
|
||||||
|
Add the following line to your `rules.mk`:
|
||||||
|
|
||||||
|
```make
|
||||||
|
SEQUENCER_ENABLE = yes
|
||||||
|
```
|
||||||
|
|
||||||
|
By default the sequencer has 16 steps, but you can override this setting in your `config.h`:
|
||||||
|
|
||||||
|
```c
|
||||||
|
#define SEQUENCER_STEPS 32
|
||||||
|
```
|
||||||
|
|
||||||
|
## Tracks
|
||||||
|
|
||||||
|
You can program up to 8 independent tracks with the step sequencer. Select the tracks you want to edit, enable or disable some steps, and start the sequence!
|
||||||
|
|
||||||
|
## Resolutions
|
||||||
|
|
||||||
|
While the tempo defines the absolute speed at which the sequencer goes through the steps, the resolution defines the granularity of these steps (from coarser to finer).
|
||||||
|
|
||||||
|
|Resolution |Description |
|
||||||
|
|---------- |----------- |
|
||||||
|
|`SQ_RES_2` |Every other beat |
|
||||||
|
|`SQ_RES_2T` |Every 1.5 beats |
|
||||||
|
|`SQ_RES_4` |Every beat |
|
||||||
|
|`SQ_RES_4T` |Three times per 2 beats|
|
||||||
|
|`SQ_RES_8` |Twice per beat |
|
||||||
|
|`SQ_RES_8T` |Three times per beat |
|
||||||
|
|`SQ_RES_16` |Four times per beat |
|
||||||
|
|`SQ_RES_16T` |Six times per beat |
|
||||||
|
|`SQ_RES_32` |Eight times per beat |
|
||||||
|
|
||||||
|
## Keycodes
|
||||||
|
|
||||||
|
|Keycode |Description |
|
||||||
|
|------- |----------- |
|
||||||
|
|`SQ_ON` |Start the step sequencer |
|
||||||
|
|`SQ_OFF` |Stop the step sequencer |
|
||||||
|
|`SQ_TOG` |Toggle the step sequencer playback |
|
||||||
|
|`SQ_SALL`|Enable all the steps |
|
||||||
|
|`SQ_SCLR`|Disable all the steps |
|
||||||
|
|`SQ_S(n)`|Toggle the step `n` |
|
||||||
|
|`SQ_TMPD`|Decrease the tempo |
|
||||||
|
|`SQ_TMPU`|Increase the tempo |
|
||||||
|
|`SQ_R(n)`|Set the resolution to n |
|
||||||
|
|`SQ_RESD`|Change to the slower resolution |
|
||||||
|
|`SQ_RESU`|Change to the faster resolution |
|
||||||
|
|`SQ_T(n)`|Set `n` as the only active track or deactivate all |
|
||||||
|
|
||||||
|
## Functions
|
||||||
|
|
||||||
|
|Function |Description |
|
||||||
|
|-------- |----------- |
|
||||||
|
|`bool is_sequencer_on(void);` |Return whether the sequencer is playing |
|
||||||
|
|`void sequencer_toggle(void);` |Toggle the step sequencer playback |
|
||||||
|
|`void sequencer_on(void);` |Start the step sequencer |
|
||||||
|
|`void sequencer_off(void);` |Stop the step sequencer |
|
||||||
|
|`bool is_sequencer_step_on(uint8_t step);` |Return whether the step is currently enabled |
|
||||||
|
|`void sequencer_set_step(uint8_t step, bool value);` |Enable or disable the step |
|
||||||
|
|`void sequencer_set_step_on();` |Enable the step |
|
||||||
|
|`void sequencer_set_step_off();` |Disable the step |
|
||||||
|
|`void sequencer_toggle_step(uint8_t step);` |Toggle the step |
|
||||||
|
|`void sequencer_set_all_steps(bool value);` |Enable or disable all the steps |
|
||||||
|
|`void sequencer_set_all_steps_on();` |Enable all the steps |
|
||||||
|
|`void sequencer_set_all_steps_off();` |Disable all the steps |
|
||||||
|
|`uint8_t sequencer_get_tempo(void);` |Return the current tempo |
|
||||||
|
|`void sequencer_set_tempo(uint8_t tempo);` |Set the tempo to `tempo` (between 1 and 255) |
|
||||||
|
|`void sequencer_increase_tempo(void);` |Increase the tempo |
|
||||||
|
|`void sequencer_decrease_tempo(void);` |Decrease the tempo |
|
||||||
|
|`sequencer_resolution_t sequencer_get_resolution(void);` |Return the current resolution |
|
||||||
|
|`void sequencer_set_resolution(sequencer_resolution_t resolution);` |Set the resolution to `resolution` |
|
||||||
|
|`void sequencer_increase_resolution(void);` |Change to the faster resolution |
|
||||||
|
|`void sequencer_decrease_resolution(void);` |Change to the slower resolution |
|
||||||
|
|`bool is_sequencer_track_active(uint8_t track);` |Return whether the track is active |
|
||||||
|
|`void sequencer_set_track_activation(uint8_t track, bool value);` |Activate or deactivate the `track` |
|
||||||
|
|`void sequencer_toggle_track_activation(uint8_t track);` |Toggle the `track` |
|
||||||
|
|`void sequencer_activate_track(uint8_t track);` |Activate the `track` |
|
||||||
|
|`void sequencer_deactivate_track(uint8_t track);` |Deactivate the `track` |
|
||||||
|
|`void sequencer_toggle_single_active_track(uint8_t track);` |Set `track` as the only active track or deactivate all |
|
||||||
|
|
|
@ -21,3 +21,22 @@ The following functions can provide basic control of GPIOs and are found in `qua
|
||||||
## Advanced Settings :id=advanced-settings
|
## Advanced Settings :id=advanced-settings
|
||||||
|
|
||||||
Each microcontroller can have multiple advanced settings regarding its GPIO. This abstraction layer does not limit the use of architecture-specific functions. Advanced users should consult the datasheet of their desired device and include any needed libraries. For AVR, the standard avr/io.h library is used; for STM32, the ChibiOS [PAL library](http://chibios.sourceforge.net/docs3/hal/group___p_a_l.html) is used.
|
Each microcontroller can have multiple advanced settings regarding its GPIO. This abstraction layer does not limit the use of architecture-specific functions. Advanced users should consult the datasheet of their desired device and include any needed libraries. For AVR, the standard avr/io.h library is used; for STM32, the ChibiOS [PAL library](http://chibios.sourceforge.net/docs3/hal/group___p_a_l.html) is used.
|
||||||
|
|
||||||
|
## Atomic Operation
|
||||||
|
|
||||||
|
The above functions are not always guaranteed to work atomically. Therefore, if you want to prevent interruptions in the middle of operations when using multiple combinations of the above functions, use the following `ATOMIC_BLOCK_FORCEON` macro.
|
||||||
|
|
||||||
|
eg.
|
||||||
|
```c
|
||||||
|
void some_function() {
|
||||||
|
// some process
|
||||||
|
ATOMIC_BLOCK_FORCEON {
|
||||||
|
// Atomic Processing
|
||||||
|
}
|
||||||
|
// some process
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
`ATOMIC_BLOCK_FORCEON` forces interrupts to be disabled before the block is executed, without regard to whether they are enabled or disabled. Then, after the block is executed, the interrupt is enabled.
|
||||||
|
|
||||||
|
Note that `ATOMIC_BLOCK_FORCEON` can therefore be used if you know that interrupts are enabled before the execution of the block, or if you know that it is OK to enable interrupts at the completion of the block.
|
||||||
|
|
|
@ -15,7 +15,8 @@ RGB LED を使いたい場合は、代わりに [RGB マトリックスサブシ
|
||||||
|
|
||||||
I2C IS31FL3731 RGB コントローラを使ったアドレス指定可能な LED マトリックスライトのための基本的なサポートがあります:有効にするには、`rules.mk` に以下を追加します:
|
I2C IS31FL3731 RGB コントローラを使ったアドレス指定可能な LED マトリックスライトのための基本的なサポートがあります:有効にするには、`rules.mk` に以下を追加します:
|
||||||
|
|
||||||
LED_MATRIX_ENABLE = IS31FL3731
|
LED_MATRIX_ENABLE = yes
|
||||||
|
LED_MATRIX_DRIVER = IS31FL3731
|
||||||
|
|
||||||
1から4個の IS31FL3731 IC を使うことができます。キーボード上に存在しない IC の `LED_DRIVER_ADDR_<N>` 定義を指定しないでください。`config.h` に以下の項目を定義することができます:
|
1から4個の IS31FL3731 IC を使うことができます。キーボード上に存在しない IC の `LED_DRIVER_ADDR_<N>` 定義を指定しないでください。`config.h` に以下の項目を定義することができます:
|
||||||
|
|
||||||
|
|
|
@ -179,6 +179,25 @@ Holding and releasing a dual function key without pressing another key will resu
|
||||||
|
|
||||||
For instance, holding and releasing `LT(2, KC_SPACE)` without hitting another key will result in nothing happening. With this enabled, it will send `KC_SPACE` instead.
|
For instance, holding and releasing `LT(2, KC_SPACE)` without hitting another key will result in nothing happening. With this enabled, it will send `KC_SPACE` instead.
|
||||||
|
|
||||||
|
For more granular control of this feature, you can add the following to your `config.h`:
|
||||||
|
|
||||||
|
```c
|
||||||
|
#define RETRO_TAPPING_PER_KEY
|
||||||
|
```
|
||||||
|
|
||||||
|
You can then add the following function to your keymap:
|
||||||
|
|
||||||
|
```c
|
||||||
|
bool get_retro_tapping(uint16_t keycode, keyrecord_t *record) {
|
||||||
|
switch (keycode) {
|
||||||
|
case LT(2, KC_SPACE):
|
||||||
|
return true;
|
||||||
|
default:
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
## Why do we include the key record for the per key functions?
|
## Why do we include the key record for the per key functions?
|
||||||
|
|
||||||
One thing that you may notice is that we include the key record for all of the "per key" functions, and may be wondering why we do that.
|
One thing that you may notice is that we include the key record for all of the "per key" functions, and may be wondering why we do that.
|
||||||
|
|
|
@ -20,12 +20,103 @@
|
||||||
|
|
||||||
#ifdef SOFT_SERIAL_PIN
|
#ifdef SOFT_SERIAL_PIN
|
||||||
|
|
||||||
# ifdef __AVR_ATmega32U4__
|
# if !(defined(__AVR_AT90USB646__) || defined(__AVR_AT90USB647__) || defined(__AVR_AT90USB1286__) || defined(__AVR_AT90USB1287__) || defined(__AVR_ATmega16U2__) || defined(__AVR_ATmega32U2__) || defined(__AVR_ATmega16U4__) || defined(__AVR_ATmega32U4__))
|
||||||
// if using ATmega32U4 I2C, can not use PD0 and PD1 in soft serial.
|
# error serial.c is not supported for the currently selected MCU
|
||||||
# ifdef USE_AVR_I2C
|
|
||||||
# if SOFT_SERIAL_PIN == D0 || SOFT_SERIAL_PIN == D1
|
|
||||||
# error Using ATmega32U4 I2C, so can not use PD0, PD1
|
|
||||||
# endif
|
# endif
|
||||||
|
// if using ATmega32U4/2, AT90USBxxx I2C, can not use PD0 and PD1 in soft serial.
|
||||||
|
# if defined(__AVR_ATmega16U4__) || defined(__AVR_ATmega32U4__) || defined(__AVR_AT90USB646__) || defined(__AVR_AT90USB647__) || defined(__AVR_AT90USB1286__) || defined(__AVR_AT90USB1287__)
|
||||||
|
# if defined(USE_AVR_I2C) && (SOFT_SERIAL_PIN == D0 || SOFT_SERIAL_PIN == D1)
|
||||||
|
# error Using I2C, so can not use PD0, PD1
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
// PD0..PD3, common config
|
||||||
|
# if SOFT_SERIAL_PIN == D0
|
||||||
|
# define EIMSK_BIT _BV(INT0)
|
||||||
|
# define EICRx_BIT (~(_BV(ISC00) | _BV(ISC01)))
|
||||||
|
# define SERIAL_PIN_INTERRUPT INT0_vect
|
||||||
|
# define EICRx EICRA
|
||||||
|
# elif SOFT_SERIAL_PIN == D1
|
||||||
|
# define EIMSK_BIT _BV(INT1)
|
||||||
|
# define EICRx_BIT (~(_BV(ISC10) | _BV(ISC11)))
|
||||||
|
# define SERIAL_PIN_INTERRUPT INT1_vect
|
||||||
|
# define EICRx EICRA
|
||||||
|
# elif SOFT_SERIAL_PIN == D2
|
||||||
|
# define EIMSK_BIT _BV(INT2)
|
||||||
|
# define EICRx_BIT (~(_BV(ISC20) | _BV(ISC21)))
|
||||||
|
# define SERIAL_PIN_INTERRUPT INT2_vect
|
||||||
|
# define EICRx EICRA
|
||||||
|
# elif SOFT_SERIAL_PIN == D3
|
||||||
|
# define EIMSK_BIT _BV(INT3)
|
||||||
|
# define EICRx_BIT (~(_BV(ISC30) | _BV(ISC31)))
|
||||||
|
# define SERIAL_PIN_INTERRUPT INT3_vect
|
||||||
|
# define EICRx EICRA
|
||||||
|
# endif
|
||||||
|
|
||||||
|
// ATmegaxxU2 specific config
|
||||||
|
# if defined(__AVR_ATmega16U2__) || defined(__AVR_ATmega32U2__)
|
||||||
|
// PD4(INT5), PD6(INT6), PD7(INT7), PC7(INT4)
|
||||||
|
# if SOFT_SERIAL_PIN == D4
|
||||||
|
# define EIMSK_BIT _BV(INT5)
|
||||||
|
# define EICRx_BIT (~(_BV(ISC50) | _BV(ISC51)))
|
||||||
|
# define SERIAL_PIN_INTERRUPT INT5_vect
|
||||||
|
# define EICRx EICRB
|
||||||
|
# elif SOFT_SERIAL_PIN == D6
|
||||||
|
# define EIMSK_BIT _BV(INT6)
|
||||||
|
# define EICRx_BIT (~(_BV(ISC60) | _BV(ISC61)))
|
||||||
|
# define SERIAL_PIN_INTERRUPT INT6_vect
|
||||||
|
# define EICRx EICRB
|
||||||
|
# elif SOFT_SERIAL_PIN == D7
|
||||||
|
# define EIMSK_BIT _BV(INT7)
|
||||||
|
# define EICRx_BIT (~(_BV(ISC70) | _BV(ISC71)))
|
||||||
|
# define SERIAL_PIN_INTERRUPT INT7_vect
|
||||||
|
# define EICRx EICRB
|
||||||
|
# elif SOFT_SERIAL_PIN == C7
|
||||||
|
# define EIMSK_BIT _BV(INT4)
|
||||||
|
# define EICRx_BIT (~(_BV(ISC40) | _BV(ISC41)))
|
||||||
|
# define SERIAL_PIN_INTERRUPT INT4_vect
|
||||||
|
# define EICRx EICRB
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
|
||||||
|
// ATmegaxxU4 specific config
|
||||||
|
# if defined(__AVR_ATmega16U4__) || defined(__AVR_ATmega32U4__)
|
||||||
|
// PE6(INT6)
|
||||||
|
# if SOFT_SERIAL_PIN == E6
|
||||||
|
# define EIMSK_BIT _BV(INT6)
|
||||||
|
# define EICRx_BIT (~(_BV(ISC60) | _BV(ISC61)))
|
||||||
|
# define SERIAL_PIN_INTERRUPT INT6_vect
|
||||||
|
# define EICRx EICRB
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
|
||||||
|
// AT90USBxxx specific config
|
||||||
|
# if defined(__AVR_AT90USB646__) || defined(__AVR_AT90USB647__) || defined(__AVR_AT90USB1286__) || defined(__AVR_AT90USB1287__)
|
||||||
|
// PE4..PE7(INT4..INT7)
|
||||||
|
# if SOFT_SERIAL_PIN == E4
|
||||||
|
# define EIMSK_BIT _BV(INT4)
|
||||||
|
# define EICRx_BIT (~(_BV(ISC40) | _BV(ISC41)))
|
||||||
|
# define SERIAL_PIN_INTERRUPT INT4_vect
|
||||||
|
# define EICRx EICRB
|
||||||
|
# elif SOFT_SERIAL_PIN == E5
|
||||||
|
# define EIMSK_BIT _BV(INT5)
|
||||||
|
# define EICRx_BIT (~(_BV(ISC50) | _BV(ISC51)))
|
||||||
|
# define SERIAL_PIN_INTERRUPT INT5_vect
|
||||||
|
# define EICRx EICRB
|
||||||
|
# elif SOFT_SERIAL_PIN == E6
|
||||||
|
# define EIMSK_BIT _BV(INT6)
|
||||||
|
# define EICRx_BIT (~(_BV(ISC60) | _BV(ISC61)))
|
||||||
|
# define SERIAL_PIN_INTERRUPT INT6_vect
|
||||||
|
# define EICRx EICRB
|
||||||
|
# elif SOFT_SERIAL_PIN == E7
|
||||||
|
# define EIMSK_BIT _BV(INT7)
|
||||||
|
# define EICRx_BIT (~(_BV(ISC70) | _BV(ISC71)))
|
||||||
|
# define SERIAL_PIN_INTERRUPT INT7_vect
|
||||||
|
# define EICRx EICRB
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# ifndef SERIAL_PIN_INTERRUPT
|
||||||
|
# error invalid SOFT_SERIAL_PIN value
|
||||||
# endif
|
# endif
|
||||||
|
|
||||||
# define setPinInputHigh(pin) (DDRx_ADDRESS(pin) &= ~_BV((pin)&0xF), PORTx_ADDRESS(pin) |= _BV((pin)&0xF))
|
# define setPinInputHigh(pin) (DDRx_ADDRESS(pin) &= ~_BV((pin)&0xF), PORTx_ADDRESS(pin) |= _BV((pin)&0xF))
|
||||||
|
@ -34,36 +125,6 @@
|
||||||
# define writePinLow(pin) (PORTx_ADDRESS(pin) &= ~_BV((pin)&0xF))
|
# define writePinLow(pin) (PORTx_ADDRESS(pin) &= ~_BV((pin)&0xF))
|
||||||
# define readPin(pin) ((bool)(PINx_ADDRESS(pin) & _BV((pin)&0xF)))
|
# define readPin(pin) ((bool)(PINx_ADDRESS(pin) & _BV((pin)&0xF)))
|
||||||
|
|
||||||
# if SOFT_SERIAL_PIN >= D0 && SOFT_SERIAL_PIN <= D3
|
|
||||||
# if SOFT_SERIAL_PIN == D0
|
|
||||||
# define EIMSK_BIT _BV(INT0)
|
|
||||||
# define EICRx_BIT (~(_BV(ISC00) | _BV(ISC01)))
|
|
||||||
# define SERIAL_PIN_INTERRUPT INT0_vect
|
|
||||||
# elif SOFT_SERIAL_PIN == D1
|
|
||||||
# define EIMSK_BIT _BV(INT1)
|
|
||||||
# define EICRx_BIT (~(_BV(ISC10) | _BV(ISC11)))
|
|
||||||
# define SERIAL_PIN_INTERRUPT INT1_vect
|
|
||||||
# elif SOFT_SERIAL_PIN == D2
|
|
||||||
# define EIMSK_BIT _BV(INT2)
|
|
||||||
# define EICRx_BIT (~(_BV(ISC20) | _BV(ISC21)))
|
|
||||||
# define SERIAL_PIN_INTERRUPT INT2_vect
|
|
||||||
# elif SOFT_SERIAL_PIN == D3
|
|
||||||
# define EIMSK_BIT _BV(INT3)
|
|
||||||
# define EICRx_BIT (~(_BV(ISC30) | _BV(ISC31)))
|
|
||||||
# define SERIAL_PIN_INTERRUPT INT3_vect
|
|
||||||
# endif
|
|
||||||
# elif SOFT_SERIAL_PIN == E6
|
|
||||||
# define EIMSK_BIT _BV(INT6)
|
|
||||||
# define EICRx_BIT (~(_BV(ISC60) | _BV(ISC61)))
|
|
||||||
# define SERIAL_PIN_INTERRUPT INT6_vect
|
|
||||||
# else
|
|
||||||
# error invalid SOFT_SERIAL_PIN value
|
|
||||||
# endif
|
|
||||||
|
|
||||||
# else
|
|
||||||
# error serial.c now support ATmega32U4 only
|
|
||||||
# endif
|
|
||||||
|
|
||||||
# define ALWAYS_INLINE __attribute__((always_inline))
|
# define ALWAYS_INLINE __attribute__((always_inline))
|
||||||
# define NO_INLINE __attribute__((noinline))
|
# define NO_INLINE __attribute__((noinline))
|
||||||
# define _delay_sub_us(x) __builtin_avr_delay_cycles(x)
|
# define _delay_sub_us(x) __builtin_avr_delay_cycles(x)
|
||||||
|
@ -210,15 +271,9 @@ void soft_serial_target_init(SSTD_t *sstd_table, int sstd_table_size) {
|
||||||
Transaction_table_size = (uint8_t)sstd_table_size;
|
Transaction_table_size = (uint8_t)sstd_table_size;
|
||||||
serial_input_with_pullup();
|
serial_input_with_pullup();
|
||||||
|
|
||||||
// Enable INT0-INT3,INT6
|
// Enable INT0-INT7
|
||||||
EIMSK |= EIMSK_BIT;
|
EIMSK |= EIMSK_BIT;
|
||||||
# if SOFT_SERIAL_PIN == E6
|
EICRx &= EICRx_BIT;
|
||||||
// Trigger on falling edge of INT6
|
|
||||||
EICRB &= EICRx_BIT;
|
|
||||||
# else
|
|
||||||
// Trigger on falling edge of INT0-INT3
|
|
||||||
EICRA &= EICRx_BIT;
|
|
||||||
# endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Used by the sender to synchronize timing with the reciver.
|
// Used by the sender to synchronize timing with the reciver.
|
||||||
|
|
|
@ -58,6 +58,10 @@ static i2c_status_t chibios_to_qmk(const msg_t* status) {
|
||||||
}
|
}
|
||||||
|
|
||||||
__attribute__((weak)) void i2c_init(void) {
|
__attribute__((weak)) void i2c_init(void) {
|
||||||
|
static bool is_initialised = false;
|
||||||
|
if (!is_initialised) {
|
||||||
|
is_initialised = true;
|
||||||
|
|
||||||
// Try releasing special pins for a short time
|
// Try releasing special pins for a short time
|
||||||
palSetPadMode(I2C1_SCL_BANK, I2C1_SCL, PAL_MODE_INPUT);
|
palSetPadMode(I2C1_SCL_BANK, I2C1_SCL, PAL_MODE_INPUT);
|
||||||
palSetPadMode(I2C1_SDA_BANK, I2C1_SDA, PAL_MODE_INPUT);
|
palSetPadMode(I2C1_SDA_BANK, I2C1_SDA, PAL_MODE_INPUT);
|
||||||
|
@ -70,6 +74,7 @@ __attribute__((weak)) void i2c_init(void) {
|
||||||
palSetPadMode(I2C1_SCL_BANK, I2C1_SCL, PAL_MODE_ALTERNATE(I2C1_SCL_PAL_MODE) | PAL_STM32_OTYPE_OPENDRAIN);
|
palSetPadMode(I2C1_SCL_BANK, I2C1_SCL, PAL_MODE_ALTERNATE(I2C1_SCL_PAL_MODE) | PAL_STM32_OTYPE_OPENDRAIN);
|
||||||
palSetPadMode(I2C1_SDA_BANK, I2C1_SDA, PAL_MODE_ALTERNATE(I2C1_SDA_PAL_MODE) | PAL_STM32_OTYPE_OPENDRAIN);
|
palSetPadMode(I2C1_SDA_BANK, I2C1_SDA, PAL_MODE_ALTERNATE(I2C1_SDA_PAL_MODE) | PAL_STM32_OTYPE_OPENDRAIN);
|
||||||
#endif
|
#endif
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
i2c_status_t i2c_start(uint8_t address) {
|
i2c_status_t i2c_start(uint8_t address) {
|
||||||
|
|
|
@ -22,6 +22,10 @@ static pin_t currentSlavePin = NO_PIN;
|
||||||
static SPIConfig spiConfig = {false, NULL, 0, 0, 0, 0};
|
static SPIConfig spiConfig = {false, NULL, 0, 0, 0, 0};
|
||||||
|
|
||||||
__attribute__((weak)) void spi_init(void) {
|
__attribute__((weak)) void spi_init(void) {
|
||||||
|
static bool is_initialised = false;
|
||||||
|
if (!is_initialised) {
|
||||||
|
is_initialised = true;
|
||||||
|
|
||||||
// Try releasing special pins for a short time
|
// Try releasing special pins for a short time
|
||||||
palSetPadMode(PAL_PORT(SPI_SCK_PIN), PAL_PAD(SPI_SCK_PIN), PAL_MODE_INPUT);
|
palSetPadMode(PAL_PORT(SPI_SCK_PIN), PAL_PAD(SPI_SCK_PIN), PAL_MODE_INPUT);
|
||||||
palSetPadMode(PAL_PORT(SPI_MOSI_PIN), PAL_PAD(SPI_MOSI_PIN), PAL_MODE_INPUT);
|
palSetPadMode(PAL_PORT(SPI_MOSI_PIN), PAL_PAD(SPI_MOSI_PIN), PAL_MODE_INPUT);
|
||||||
|
@ -37,6 +41,7 @@ __attribute__((weak)) void spi_init(void) {
|
||||||
palSetPadMode(PAL_PORT(SPI_MOSI_PIN), PAL_PAD(SPI_MOSI_PIN), PAL_MODE_ALTERNATE(SPI_MOSI_PAL_MODE) | PAL_STM32_OTYPE_PUSHPULL | PAL_STM32_OSPEED_HIGHEST);
|
palSetPadMode(PAL_PORT(SPI_MOSI_PIN), PAL_PAD(SPI_MOSI_PIN), PAL_MODE_ALTERNATE(SPI_MOSI_PAL_MODE) | PAL_STM32_OTYPE_PUSHPULL | PAL_STM32_OSPEED_HIGHEST);
|
||||||
palSetPadMode(PAL_PORT(SPI_MISO_PIN), PAL_PAD(SPI_MISO_PIN), PAL_MODE_ALTERNATE(SPI_MISO_PAL_MODE) | PAL_STM32_OTYPE_PUSHPULL | PAL_STM32_OSPEED_HIGHEST);
|
palSetPadMode(PAL_PORT(SPI_MISO_PIN), PAL_PAD(SPI_MISO_PIN), PAL_MODE_ALTERNATE(SPI_MISO_PAL_MODE) | PAL_STM32_OTYPE_PUSHPULL | PAL_STM32_OSPEED_HIGHEST);
|
||||||
#endif
|
#endif
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool spi_start(pin_t slavePin, bool lsbFirst, uint8_t mode, uint16_t divisor) {
|
bool spi_start(pin_t slavePin, bool lsbFirst, uint8_t mode, uint16_t divisor) {
|
||||||
|
|
|
@ -42,14 +42,6 @@
|
||||||
# include "debug.h"
|
# include "debug.h"
|
||||||
#endif // DEBUG_EEPROM_OUTPUT
|
#endif // DEBUG_EEPROM_OUTPUT
|
||||||
|
|
||||||
static inline void init_i2c_if_required(void) {
|
|
||||||
static int done = 0;
|
|
||||||
if (!done) {
|
|
||||||
i2c_init();
|
|
||||||
done = 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline void fill_target_address(uint8_t *buffer, const void *addr) {
|
static inline void fill_target_address(uint8_t *buffer, const void *addr) {
|
||||||
uintptr_t p = (uintptr_t)addr;
|
uintptr_t p = (uintptr_t)addr;
|
||||||
for (int i = 0; i < EXTERNAL_EEPROM_ADDRESS_SIZE; ++i) {
|
for (int i = 0; i < EXTERNAL_EEPROM_ADDRESS_SIZE; ++i) {
|
||||||
|
@ -58,7 +50,7 @@ static inline void fill_target_address(uint8_t *buffer, const void *addr) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void eeprom_driver_init(void) {}
|
void eeprom_driver_init(void) { i2c_init(); }
|
||||||
|
|
||||||
void eeprom_driver_erase(void) {
|
void eeprom_driver_erase(void) {
|
||||||
#if defined(CONSOLE_ENABLE) && defined(DEBUG_EEPROM_OUTPUT)
|
#if defined(CONSOLE_ENABLE) && defined(DEBUG_EEPROM_OUTPUT)
|
||||||
|
@ -80,7 +72,6 @@ void eeprom_read_block(void *buf, const void *addr, size_t len) {
|
||||||
uint8_t complete_packet[EXTERNAL_EEPROM_ADDRESS_SIZE];
|
uint8_t complete_packet[EXTERNAL_EEPROM_ADDRESS_SIZE];
|
||||||
fill_target_address(complete_packet, addr);
|
fill_target_address(complete_packet, addr);
|
||||||
|
|
||||||
init_i2c_if_required();
|
|
||||||
i2c_transmit(EXTERNAL_EEPROM_I2C_ADDRESS((uintptr_t)addr), complete_packet, EXTERNAL_EEPROM_ADDRESS_SIZE, 100);
|
i2c_transmit(EXTERNAL_EEPROM_I2C_ADDRESS((uintptr_t)addr), complete_packet, EXTERNAL_EEPROM_ADDRESS_SIZE, 100);
|
||||||
i2c_receive(EXTERNAL_EEPROM_I2C_ADDRESS((uintptr_t)addr), buf, len, 100);
|
i2c_receive(EXTERNAL_EEPROM_I2C_ADDRESS((uintptr_t)addr), buf, len, 100);
|
||||||
|
|
||||||
|
@ -98,7 +89,6 @@ void eeprom_write_block(const void *buf, void *addr, size_t len) {
|
||||||
uint8_t * read_buf = (uint8_t *)buf;
|
uint8_t * read_buf = (uint8_t *)buf;
|
||||||
uintptr_t target_addr = (uintptr_t)addr;
|
uintptr_t target_addr = (uintptr_t)addr;
|
||||||
|
|
||||||
init_i2c_if_required();
|
|
||||||
while (len > 0) {
|
while (len > 0) {
|
||||||
uintptr_t page_offset = target_addr % EXTERNAL_EEPROM_PAGE_SIZE;
|
uintptr_t page_offset = target_addr % EXTERNAL_EEPROM_PAGE_SIZE;
|
||||||
int write_length = EXTERNAL_EEPROM_PAGE_SIZE - page_offset;
|
int write_length = EXTERNAL_EEPROM_PAGE_SIZE - page_offset;
|
||||||
|
|
|
@ -55,14 +55,6 @@
|
||||||
# include "debug.h"
|
# include "debug.h"
|
||||||
#endif // CONSOLE_ENABLE
|
#endif // CONSOLE_ENABLE
|
||||||
|
|
||||||
static void init_spi_if_required(void) {
|
|
||||||
static int done = 0;
|
|
||||||
if (!done) {
|
|
||||||
spi_init();
|
|
||||||
done = 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static 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 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) {
|
static spi_status_t spi_eeprom_wait_while_busy(int timeout) {
|
||||||
|
@ -91,7 +83,7 @@ static void spi_eeprom_transmit_address(uintptr_t addr) {
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
void eeprom_driver_init(void) {}
|
void eeprom_driver_init(void) { spi_init(); }
|
||||||
|
|
||||||
void eeprom_driver_erase(void) {
|
void eeprom_driver_erase(void) {
|
||||||
#if defined(CONSOLE_ENABLE) && defined(DEBUG_EEPROM_OUTPUT)
|
#if defined(CONSOLE_ENABLE) && defined(DEBUG_EEPROM_OUTPUT)
|
||||||
|
@ -110,8 +102,6 @@ void eeprom_driver_erase(void) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void eeprom_read_block(void *buf, const void *addr, size_t len) {
|
void eeprom_read_block(void *buf, const void *addr, size_t len) {
|
||||||
init_spi_if_required();
|
|
||||||
|
|
||||||
//-------------------------------------------------
|
//-------------------------------------------------
|
||||||
// Wait for the write-in-progress bit to be cleared
|
// Wait for the write-in-progress bit to be cleared
|
||||||
bool res = spi_eeprom_start();
|
bool res = spi_eeprom_start();
|
||||||
|
@ -154,8 +144,6 @@ void eeprom_read_block(void *buf, const void *addr, size_t len) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void eeprom_write_block(const void *buf, void *addr, size_t len) {
|
void eeprom_write_block(const void *buf, void *addr, size_t len) {
|
||||||
init_spi_if_required();
|
|
||||||
|
|
||||||
bool res;
|
bool res;
|
||||||
uint8_t * read_buf = (uint8_t *)buf;
|
uint8_t * read_buf = (uint8_t *)buf;
|
||||||
uintptr_t target_addr = (uintptr_t)addr;
|
uintptr_t target_addr = (uintptr_t)addr;
|
||||||
|
|
|
@ -33,11 +33,18 @@ void haptic_init(void) {
|
||||||
eeconfig_init();
|
eeconfig_init();
|
||||||
}
|
}
|
||||||
haptic_config.raw = eeconfig_read_haptic();
|
haptic_config.raw = eeconfig_read_haptic();
|
||||||
if (haptic_config.mode < 1) {
|
#ifdef SOLENOID_ENABLE
|
||||||
haptic_config.mode = 1;
|
solenoid_set_dwell(haptic_config.dwell);
|
||||||
}
|
#endif
|
||||||
if (!haptic_config.mode) {
|
if ((haptic_config.raw == 0)
|
||||||
dprintf("No haptic config found in eeprom, setting default configs\n");
|
#ifdef SOLENOID_ENABLE
|
||||||
|
|| (haptic_config.dwell == 0)
|
||||||
|
#endif
|
||||||
|
) {
|
||||||
|
// this will be called, if the eeprom is not corrupt,
|
||||||
|
// but the previous firmware didn't have haptic enabled,
|
||||||
|
// or the previous firmware didn't have solenoid enabled,
|
||||||
|
// and the current one has solenoid enabled.
|
||||||
haptic_reset();
|
haptic_reset();
|
||||||
}
|
}
|
||||||
#ifdef SOLENOID_ENABLE
|
#ifdef SOLENOID_ENABLE
|
||||||
|
@ -118,25 +125,37 @@ void haptic_mode_decrease(void) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void haptic_dwell_increase(void) {
|
void haptic_dwell_increase(void) {
|
||||||
uint8_t dwell = haptic_config.dwell + 1;
|
|
||||||
#ifdef SOLENOID_ENABLE
|
#ifdef SOLENOID_ENABLE
|
||||||
|
int16_t next_dwell = ((int16_t)haptic_config.dwell) + SOLENOID_DWELL_STEP_SIZE;
|
||||||
if (haptic_config.dwell >= SOLENOID_MAX_DWELL) {
|
if (haptic_config.dwell >= SOLENOID_MAX_DWELL) {
|
||||||
dwell = 1;
|
// if it's already at max, we wrap back to min
|
||||||
|
next_dwell = SOLENOID_MIN_DWELL;
|
||||||
|
} else if (next_dwell > SOLENOID_MAX_DWELL) {
|
||||||
|
// if we overshoot the max, then cap at max
|
||||||
|
next_dwell = SOLENOID_MAX_DWELL;
|
||||||
}
|
}
|
||||||
solenoid_set_dwell(dwell);
|
solenoid_set_dwell(next_dwell);
|
||||||
|
#else
|
||||||
|
int16_t next_dwell = ((int16_t)haptic_config.dwell) + 1;
|
||||||
#endif
|
#endif
|
||||||
haptic_set_dwell(dwell);
|
haptic_set_dwell(next_dwell);
|
||||||
}
|
}
|
||||||
|
|
||||||
void haptic_dwell_decrease(void) {
|
void haptic_dwell_decrease(void) {
|
||||||
uint8_t dwell = haptic_config.dwell - 1;
|
|
||||||
#ifdef SOLENOID_ENABLE
|
#ifdef SOLENOID_ENABLE
|
||||||
if (haptic_config.dwell < SOLENOID_MIN_DWELL) {
|
int16_t next_dwell = ((int16_t)haptic_config.dwell) - SOLENOID_DWELL_STEP_SIZE;
|
||||||
dwell = SOLENOID_MAX_DWELL;
|
if (haptic_config.dwell <= SOLENOID_MIN_DWELL) {
|
||||||
|
// if it's already at min, we wrap to max
|
||||||
|
next_dwell = SOLENOID_MAX_DWELL;
|
||||||
|
} else if (next_dwell < SOLENOID_MIN_DWELL) {
|
||||||
|
// if we go below min, then we cap to min
|
||||||
|
next_dwell = SOLENOID_MIN_DWELL;
|
||||||
}
|
}
|
||||||
solenoid_set_dwell(dwell);
|
solenoid_set_dwell(next_dwell);
|
||||||
|
#else
|
||||||
|
int16_t next_dwell = ((int16_t)haptic_config.dwell) - 1;
|
||||||
#endif
|
#endif
|
||||||
haptic_set_dwell(dwell);
|
haptic_set_dwell(next_dwell);
|
||||||
}
|
}
|
||||||
|
|
||||||
void haptic_reset(void) {
|
void haptic_reset(void) {
|
||||||
|
@ -150,6 +169,12 @@ void haptic_reset(void) {
|
||||||
#ifdef SOLENOID_ENABLE
|
#ifdef SOLENOID_ENABLE
|
||||||
uint8_t dwell = SOLENOID_DEFAULT_DWELL;
|
uint8_t dwell = SOLENOID_DEFAULT_DWELL;
|
||||||
haptic_config.dwell = dwell;
|
haptic_config.dwell = dwell;
|
||||||
|
haptic_config.buzz = SOLENOID_DEFAULT_BUZZ;
|
||||||
|
solenoid_set_dwell(dwell);
|
||||||
|
#else
|
||||||
|
// This is to trigger haptic_reset again, if solenoid is enabled in the future.
|
||||||
|
haptic_config.dwell = 0;
|
||||||
|
haptic_config.buzz = 0;
|
||||||
#endif
|
#endif
|
||||||
eeconfig_update_haptic(haptic_config.raw);
|
eeconfig_update_haptic(haptic_config.raw);
|
||||||
xprintf("haptic_config.feedback = %u\n", haptic_config.feedback);
|
xprintf("haptic_config.feedback = %u\n", haptic_config.feedback);
|
||||||
|
|
|
@ -32,14 +32,6 @@ void solenoid_buzz_off(void) { haptic_set_buzz(0); }
|
||||||
|
|
||||||
void solenoid_set_buzz(int buzz) { haptic_set_buzz(buzz); }
|
void solenoid_set_buzz(int buzz) { haptic_set_buzz(buzz); }
|
||||||
|
|
||||||
void solenoid_dwell_minus(uint8_t solenoid_dwell) {
|
|
||||||
if (solenoid_dwell > 0) solenoid_dwell--;
|
|
||||||
}
|
|
||||||
|
|
||||||
void solenoid_dwell_plus(uint8_t solenoid_dwell) {
|
|
||||||
if (solenoid_dwell < SOLENOID_MAX_DWELL) solenoid_dwell++;
|
|
||||||
}
|
|
||||||
|
|
||||||
void solenoid_set_dwell(uint8_t dwell) { solenoid_dwell = dwell; }
|
void solenoid_set_dwell(uint8_t dwell) { solenoid_dwell = dwell; }
|
||||||
|
|
||||||
void solenoid_stop(void) {
|
void solenoid_stop(void) {
|
||||||
|
@ -73,7 +65,7 @@ void solenoid_check(void) {
|
||||||
|
|
||||||
// Check whether to buzz the solenoid on and off
|
// Check whether to buzz the solenoid on and off
|
||||||
if (haptic_config.buzz) {
|
if (haptic_config.buzz) {
|
||||||
if (elapsed / SOLENOID_MIN_DWELL % 2 == 0) {
|
if ((elapsed % (SOLENOID_BUZZ_ACTUATED + SOLENOID_BUZZ_NONACTUATED)) < SOLENOID_BUZZ_ACTUATED) {
|
||||||
if (!solenoid_buzzing) {
|
if (!solenoid_buzzing) {
|
||||||
solenoid_buzzing = true;
|
solenoid_buzzing = true;
|
||||||
writePinHigh(SOLENOID_PIN);
|
writePinHigh(SOLENOID_PIN);
|
||||||
|
|
|
@ -29,6 +29,22 @@
|
||||||
# define SOLENOID_MIN_DWELL 4
|
# define SOLENOID_MIN_DWELL 4
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef SOLENOID_DWELL_STEP_SIZE
|
||||||
|
# define SOLENOID_DWELL_STEP_SIZE 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef SOLENOID_DEFAULT_BUZZ
|
||||||
|
# define SOLENOID_DEFAULT_BUZZ 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef SOLENOID_BUZZ_ACTUATED
|
||||||
|
# define SOLENOID_BUZZ_ACTUATED SOLENOID_MIN_DWELL
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef SOLENOID_BUZZ_NONACTUATED
|
||||||
|
# define SOLENOID_BUZZ_NONACTUATED SOLENOID_MIN_DWELL
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifndef SOLENOID_PIN
|
#ifndef SOLENOID_PIN
|
||||||
# error SOLENOID_PIN not defined
|
# error SOLENOID_PIN not defined
|
||||||
#endif
|
#endif
|
||||||
|
@ -37,8 +53,6 @@ void solenoid_buzz_on(void);
|
||||||
void solenoid_buzz_off(void);
|
void solenoid_buzz_off(void);
|
||||||
void solenoid_set_buzz(int buzz);
|
void solenoid_set_buzz(int buzz);
|
||||||
|
|
||||||
void solenoid_dwell_minus(uint8_t solenoid_dwell);
|
|
||||||
void solenoid_dwell_plus(uint8_t solenoid_dwell);
|
|
||||||
void solenoid_set_dwell(uint8_t dwell);
|
void solenoid_set_dwell(uint8_t dwell);
|
||||||
|
|
||||||
void solenoid_stop(void);
|
void solenoid_stop(void);
|
||||||
|
|
|
@ -119,6 +119,9 @@ uint32_t oled_timeout;
|
||||||
#if OLED_SCROLL_TIMEOUT > 0
|
#if OLED_SCROLL_TIMEOUT > 0
|
||||||
uint32_t oled_scroll_timeout;
|
uint32_t oled_scroll_timeout;
|
||||||
#endif
|
#endif
|
||||||
|
#if OLED_UPDATE_INTERVAL > 0
|
||||||
|
uint16_t oled_update_timeout;
|
||||||
|
#endif
|
||||||
|
|
||||||
// Internal variables to reduce math instructions
|
// Internal variables to reduce math instructions
|
||||||
|
|
||||||
|
@ -468,8 +471,9 @@ void oled_write_raw_byte(const char data, uint16_t index) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void oled_write_raw(const char *data, uint16_t size) {
|
void oled_write_raw(const char *data, uint16_t size) {
|
||||||
if (size > OLED_MATRIX_SIZE) size = OLED_MATRIX_SIZE;
|
uint16_t cursor_start_index = oled_cursor - &oled_buffer[0];
|
||||||
for (uint16_t i = 0; i < size; i++) {
|
if ((size + cursor_start_index) > OLED_MATRIX_SIZE) size = OLED_MATRIX_SIZE - cursor_start_index;
|
||||||
|
for (uint16_t i = cursor_start_index; i < cursor_start_index + size; i++) {
|
||||||
if (oled_buffer[i] == data[i]) continue;
|
if (oled_buffer[i] == data[i]) continue;
|
||||||
oled_buffer[i] = data[i];
|
oled_buffer[i] = data[i];
|
||||||
oled_dirty |= ((OLED_BLOCK_TYPE)1 << (i / OLED_BLOCK_SIZE));
|
oled_dirty |= ((OLED_BLOCK_TYPE)1 << (i / OLED_BLOCK_SIZE));
|
||||||
|
@ -511,8 +515,9 @@ void oled_write_ln_P(const char *data, bool invert) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void oled_write_raw_P(const char *data, uint16_t size) {
|
void oled_write_raw_P(const char *data, uint16_t size) {
|
||||||
if (size > OLED_MATRIX_SIZE) size = OLED_MATRIX_SIZE;
|
uint16_t cursor_start_index = oled_cursor - &oled_buffer[0];
|
||||||
for (uint16_t i = 0; i < size; i++) {
|
if ((size + cursor_start_index) > OLED_MATRIX_SIZE) size = OLED_MATRIX_SIZE - cursor_start_index;
|
||||||
|
for (uint16_t i = cursor_start_index; i < cursor_start_index + size; i++) {
|
||||||
uint8_t c = pgm_read_byte(data++);
|
uint8_t c = pgm_read_byte(data++);
|
||||||
if (oled_buffer[i] == c) continue;
|
if (oled_buffer[i] == c) continue;
|
||||||
oled_buffer[i] = c;
|
oled_buffer[i] = c;
|
||||||
|
@ -650,9 +655,16 @@ void oled_task(void) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if OLED_UPDATE_INTERVAL > 0
|
||||||
|
if (timer_elapsed(oled_update_timeout) >= OLED_UPDATE_INTERVAL) {
|
||||||
|
oled_update_timeout = timer_read();
|
||||||
oled_set_cursor(0, 0);
|
oled_set_cursor(0, 0);
|
||||||
|
|
||||||
oled_task_user();
|
oled_task_user();
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
oled_set_cursor(0, 0);
|
||||||
|
oled_task_user();
|
||||||
|
#endif
|
||||||
|
|
||||||
#if OLED_SCROLL_TIMEOUT > 0
|
#if OLED_SCROLL_TIMEOUT > 0
|
||||||
if (oled_dirty && oled_scrolling) {
|
if (oled_dirty && oled_scrolling) {
|
||||||
|
|
|
@ -25,7 +25,8 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||||
NKRO_ENABLE = no # USB Nkey Rollover
|
NKRO_ENABLE = no # 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
|
||||||
RGB_MATRIX_ENABLE = WS2812
|
RGB_MATRIX_ENABLE = yes
|
||||||
|
RGB_MATRIX_DRIVER = WS2812
|
||||||
MIDI_ENABLE = no # MIDI support
|
MIDI_ENABLE = no # MIDI support
|
||||||
UNICODE_ENABLE = no # Unicode
|
UNICODE_ENABLE = no # Unicode
|
||||||
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright 2017 Paul Ewing
|
/* Copyright 2020 Harrison Chan (Xelus)
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* 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
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
@ -14,6 +14,4 @@
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#pragma once
|
#include "config_common.h"
|
||||||
|
|
||||||
// place overrides here
|
|
1
keyboards/aeboards/ext65/ext65.c
Normal file
1
keyboards/aeboards/ext65/ext65.c
Normal file
|
@ -0,0 +1 @@
|
||||||
|
#include "ext65.h"
|
9
keyboards/aeboards/ext65/ext65.h
Normal file
9
keyboards/aeboards/ext65/ext65.h
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "quantum.h"
|
||||||
|
|
||||||
|
#if defined(KEYBOARD_aeboards_ext65_rev1)
|
||||||
|
#include "rev1.h"
|
||||||
|
#elif defined(KEYBOARD_aeboards_ext65_rev2)
|
||||||
|
#include "rev2.h"
|
||||||
|
#endif
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright 2018 Jason Williams (Wilba)
|
/* Copyright 2020 Harrison Chan (Xelus)
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* 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
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
@ -30,18 +30,18 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
* `------------------------------------------------------------------------------------------'
|
* `------------------------------------------------------------------------------------------'
|
||||||
*/
|
*/
|
||||||
[0] = LAYOUT_ext65(
|
[0] = LAYOUT_ext65(
|
||||||
RGB_M_T, BL_INC , BL_DEC , BL_TOGG, KC_ESC , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_BSLS, KC_GRV , KC_PSCR,
|
KC_PMNS, KC_PAST, KC_PSLS, KC_NLCK, KC_ESC , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_BSLS, KC_GRV , KC_PSCR,
|
||||||
RGB_TOG, KC_P9 , KC_P8 , KC_P7 , KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_BSPC, KC_DEL ,
|
KC_PPLS, KC_P9 , KC_P8 , KC_P7 , KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_BSPC, KC_DEL ,
|
||||||
KC_PPLS, KC_P6 , KC_P5 , KC_P4 , KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_ENT , KC_PGUP,
|
KC_PPLS, KC_P6 , KC_P5 , KC_P4 , KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_ENT , KC_PGUP,
|
||||||
KC_PENT, KC_P3 , KC_P2 , KC_P1 , KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_UP , KC_PGDN,
|
KC_PENT, KC_P3 , KC_P2 , KC_P1 , KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_UP , KC_PGDN,
|
||||||
KC_PENT, KC_PDOT, KC_P0 , KC_P0 , KC_LCTL, KC_LGUI, KC_LALT, KC_SPC , MO(1) , KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
|
KC_PENT, KC_PDOT, KC_P0 , KC_P0 , KC_LCTL, KC_LGUI, KC_LALT, KC_SPC , MO(1) , KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
|
||||||
),
|
),
|
||||||
|
|
||||||
[1] = LAYOUT_ext65(
|
[1] = LAYOUT_ext65(
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET , KC_TRNS,
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET,
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
KC_TRNS, RGB_TOG, RGB_MOD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, EEP_RST,
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
KC_TRNS, RGB_HUI, RGB_SAI, RGB_VAI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, DEBUG,
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
KC_TRNS, RGB_HUD, RGB_SAD, RGB_VAD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
||||||
),
|
),
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright 2018 Jason Williams (Wilba)
|
/* Copyright 2020 Harrison Chan (Xelus)
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* 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
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
@ -30,18 +30,18 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
* `------------------------------------------------------------------------------------------'
|
* `------------------------------------------------------------------------------------------'
|
||||||
*/
|
*/
|
||||||
[0] = LAYOUT_ext65(
|
[0] = LAYOUT_ext65(
|
||||||
RGB_M_T, BL_INC , BL_DEC , BL_TOGG, KC_ESC , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_BSLS, KC_GRV , KC_PSCR,
|
KC_PMNS, KC_PAST, KC_PSLS, KC_NLCK, KC_ESC , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_BSLS, KC_GRV , KC_PSCR,
|
||||||
RGB_TOG, KC_P9 , KC_P8 , KC_P7 , KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_BSPC, KC_DEL ,
|
KC_PPLS, KC_P9 , KC_P8 , KC_P7 , KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_BSPC, KC_DEL ,
|
||||||
KC_PPLS, KC_P6 , KC_P5 , KC_P4 , KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_ENT , KC_PGUP,
|
KC_PPLS, KC_P6 , KC_P5 , KC_P4 , KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_ENT , KC_PGUP,
|
||||||
KC_PENT, KC_P3 , KC_P2 , KC_P1 , KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_UP , KC_PGDN,
|
KC_PENT, KC_P3 , KC_P2 , KC_P1 , KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_UP , KC_PGDN,
|
||||||
KC_PENT, KC_PDOT, KC_P0 , KC_P0 , KC_LCTL, KC_LGUI, KC_LALT, KC_SPC , MO(1) , KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
|
KC_PENT, KC_PDOT, KC_P0 , KC_P0 , KC_LCTL, KC_LGUI, KC_LALT, KC_SPC , MO(1) , KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
|
||||||
),
|
),
|
||||||
|
|
||||||
[1] = LAYOUT_ext65(
|
[1] = LAYOUT_ext65(
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET , KC_TRNS,
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET,
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
KC_TRNS, RGB_TOG, RGB_MOD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, EEP_RST,
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
KC_TRNS, RGB_HUI, RGB_SAI, RGB_VAI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, DEBUG,
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
KC_TRNS, RGB_HUD, RGB_SAD, RGB_VAD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
||||||
),
|
),
|
||||||
|
|
19
keyboards/aeboards/ext65/readme.md
Normal file
19
keyboards/aeboards/ext65/readme.md
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
# EXT65
|
||||||
|
|
||||||
|
A southpaw inspired keyboard by [AEBoards](https://aeboards.com/)
|
||||||
|
|
||||||
|
* Keyboard Maintainer: [Xelus22](https://github.com/Xelus22)
|
||||||
|
* Hardware Supported: EXT65 Rev1, Rev2
|
||||||
|
* Hardware Availability: Custom keyboard group buys
|
||||||
|
|
||||||
|
Make example for this keyboard (after setting up your build environment):
|
||||||
|
|
||||||
|
make aeboards/ext65/rev1:default
|
||||||
|
make aeboards/ext65/rev2:default
|
||||||
|
|
||||||
|
Flashing example for this keyboard:
|
||||||
|
|
||||||
|
make aeboards/ext65/rev1:default:flash
|
||||||
|
make aeboards/ext65/rev2:default:flash
|
||||||
|
|
||||||
|
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
|
|
@ -22,9 +22,8 @@
|
||||||
#define VENDOR_ID 0x4145 // "AE"
|
#define VENDOR_ID 0x4145 // "AE"
|
||||||
#define PRODUCT_ID 0xAE65 // AEboards EXT65
|
#define PRODUCT_ID 0xAE65 // AEboards EXT65
|
||||||
#define DEVICE_VER 0x0001
|
#define DEVICE_VER 0x0001
|
||||||
#define MANUFACTURER AEboards
|
#define MANUFACTURER AEBoards
|
||||||
#define PRODUCT AEboards Ext65
|
#define PRODUCT AEBoards Ext65
|
||||||
#define DESCRIPTION AEboards Ext65
|
|
||||||
|
|
||||||
/* key matrix size */
|
/* key matrix size */
|
||||||
#define MATRIX_ROWS 10
|
#define MATRIX_ROWS 10
|
||||||
|
|
|
@ -1,103 +0,0 @@
|
||||||
/* Copyright 2018 Jason Williams (Wilba)
|
|
||||||
*
|
|
||||||
* 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/>.
|
|
||||||
*/
|
|
||||||
#include QMK_KEYBOARD_H
|
|
||||||
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|
||||||
/* Keymap BASE: (Base Layer) Default Layer
|
|
||||||
* ,-------------------. ,-------------------------------------------------------------------.
|
|
||||||
* |- | * | / |NmLK| |Esc| 1 | 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|pipe| ~ | Pscr|
|
|
||||||
* |-------------------| |-------------------------------------------------------------------|
|
|
||||||
* | | 9 | 8 | 7 | |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| BSPC | Del |
|
|
||||||
* | + |--------------| |-------------------------------------------------------------------|
|
|
||||||
* | | 6 | 5 | 4 | |Caps | A| S| D| F| G| H| J| K| L| ;| '|Return | Pgup|
|
|
||||||
* |-------------------| |-------------------------------------------------------------------|
|
|
||||||
* | | 3 | 2 | 1 | |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift | Up | Pgdn|
|
|
||||||
* | ENT|-------------------------------------------------------------------------------------|
|
|
||||||
* | | . | 0 | | Ctrl | Win | Alt | Space | FN | Ctrl | |Left| Dn | Rght|
|
|
||||||
* `------------------------------------------------------------------------------------------'
|
|
||||||
*/
|
|
||||||
[0] = LAYOUT_ext65(
|
|
||||||
KC_PMNS, KC_PAST, KC_PSLS, KC_NLCK, KC_ESC , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_BSLS, KC_GRV , KC_PSCR,
|
|
||||||
KC_PPLS, KC_P9 , KC_P8 , KC_P7 , KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_BSPC, KC_DEL ,
|
|
||||||
KC_PPLS, KC_P6 , KC_P5 , KC_P4 , KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_ENT , KC_PGUP,
|
|
||||||
KC_PENT, KC_P3 , KC_P2 , KC_P1 , KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_UP , KC_PGDN,
|
|
||||||
KC_PENT, KC_PDOT, KC_P0 , KC_P0 , KC_LCTL, KC_LGUI, KC_LALT, KC_SPC , MO(1) , KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
|
|
||||||
),
|
|
||||||
|
|
||||||
[1] = LAYOUT_ext65(
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
|
||||||
),
|
|
||||||
|
|
||||||
[2] = LAYOUT_ext65(
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
|
||||||
),
|
|
||||||
|
|
||||||
[3] = LAYOUT_ext65(
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
|
||||||
)
|
|
||||||
};
|
|
||||||
|
|
||||||
void keyboard_pre_init_user(void) {
|
|
||||||
// Call the keyboard pre init code.
|
|
||||||
|
|
||||||
// Set our LED pins as output
|
|
||||||
setPinOutput(D5);
|
|
||||||
setPinOutput(D3);
|
|
||||||
setPinOutput(D2);
|
|
||||||
setPinOutput(D1);
|
|
||||||
}
|
|
||||||
|
|
||||||
void led_set_user(uint8_t usb_led) {
|
|
||||||
if (IS_LED_ON(usb_led, USB_LED_NUM_LOCK)) {
|
|
||||||
writePinHigh(D5);
|
|
||||||
} else {
|
|
||||||
writePinLow(D5);
|
|
||||||
}
|
|
||||||
if (IS_LED_ON(usb_led, USB_LED_CAPS_LOCK)) {
|
|
||||||
writePinHigh(D3);
|
|
||||||
} else {
|
|
||||||
writePinLow(D3);
|
|
||||||
}
|
|
||||||
if (IS_LED_ON(usb_led, USB_LED_SCROLL_LOCK)) {
|
|
||||||
writePinHigh(D2);
|
|
||||||
} else {
|
|
||||||
writePinLow(D2);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
layer_state_t layer_state_set_user(layer_state_t state) {
|
|
||||||
switch (get_highest_layer(state)) {
|
|
||||||
case 1:
|
|
||||||
writePinHigh(D1);
|
|
||||||
break;
|
|
||||||
default: // for any other layers, or the default layer
|
|
||||||
writePinLow(D1);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
return state;
|
|
||||||
}
|
|
|
@ -1,2 +0,0 @@
|
||||||
# The Default Ext65 Layout
|
|
||||||
|
|
|
@ -1,103 +0,0 @@
|
||||||
/* Copyright 2018 Jason Williams (Wilba)
|
|
||||||
*
|
|
||||||
* 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/>.
|
|
||||||
*/
|
|
||||||
#include QMK_KEYBOARD_H
|
|
||||||
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|
||||||
/* Keymap BASE: (Base Layer) Default Layer
|
|
||||||
* ,-------------------. ,-------------------------------------------------------------------.
|
|
||||||
* |- | * | / |NmLK| |Esc| 1 | 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|pipe| ~ | Pscr|
|
|
||||||
* |-------------------| |-------------------------------------------------------------------|
|
|
||||||
* | | 9 | 8 | 7 | |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| BSPC | Del |
|
|
||||||
* | + |--------------| |-------------------------------------------------------------------|
|
|
||||||
* | | 6 | 5 | 4 | |Caps | A| S| D| F| G| H| J| K| L| ;| '|Return | Pgup|
|
|
||||||
* |-------------------| |-------------------------------------------------------------------|
|
|
||||||
* | | 3 | 2 | 1 | |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift | Up | Pgdn|
|
|
||||||
* | ENT|-------------------------------------------------------------------------------------|
|
|
||||||
* | | . | 0 | | Ctrl | Win | Alt | Space | FN | Ctrl | |Left| Dn | Rght|
|
|
||||||
* `------------------------------------------------------------------------------------------'
|
|
||||||
*/
|
|
||||||
[0] = LAYOUT_ext65(
|
|
||||||
KC_PMNS, KC_PAST, KC_PSLS, KC_NLCK, KC_ESC , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_BSLS, KC_GRV , KC_PSCR,
|
|
||||||
KC_PPLS, KC_P9 , KC_P8 , KC_P7 , KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_BSPC, KC_DEL ,
|
|
||||||
KC_PPLS, KC_P6 , KC_P5 , KC_P4 , KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_ENT , KC_PGUP,
|
|
||||||
KC_PENT, KC_P3 , KC_P2 , KC_P1 , KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_UP , KC_PGDN,
|
|
||||||
KC_PENT, KC_PDOT, KC_P0 , KC_P0 , KC_LCTL, KC_LGUI, KC_LALT, KC_SPC , MO(1) , KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
|
|
||||||
),
|
|
||||||
|
|
||||||
[1] = LAYOUT_ext65(
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
|
||||||
),
|
|
||||||
|
|
||||||
[2] = LAYOUT_ext65(
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
|
||||||
),
|
|
||||||
|
|
||||||
[3] = LAYOUT_ext65(
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
|
||||||
)
|
|
||||||
};
|
|
||||||
|
|
||||||
void keyboard_pre_init_user(void) {
|
|
||||||
// Call the keyboard pre init code.
|
|
||||||
|
|
||||||
// Set our LED pins as output
|
|
||||||
setPinOutput(D5);
|
|
||||||
setPinOutput(D3);
|
|
||||||
setPinOutput(D2);
|
|
||||||
setPinOutput(D1);
|
|
||||||
}
|
|
||||||
|
|
||||||
void led_set_user(uint8_t usb_led) {
|
|
||||||
if (IS_LED_ON(usb_led, USB_LED_NUM_LOCK)) {
|
|
||||||
writePinHigh(D5);
|
|
||||||
} else {
|
|
||||||
writePinLow(D5);
|
|
||||||
}
|
|
||||||
if (IS_LED_ON(usb_led, USB_LED_CAPS_LOCK)) {
|
|
||||||
writePinHigh(D3);
|
|
||||||
} else {
|
|
||||||
writePinLow(D3);
|
|
||||||
}
|
|
||||||
if (IS_LED_ON(usb_led, USB_LED_SCROLL_LOCK)) {
|
|
||||||
writePinHigh(D2);
|
|
||||||
} else {
|
|
||||||
writePinLow(D2);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
uint32_t layer_state_set_user(uint32_t state) {
|
|
||||||
switch (biton32(state)) {
|
|
||||||
case 1:
|
|
||||||
writePinHigh(D1);
|
|
||||||
break;
|
|
||||||
default: // for any other layers, or the default layer
|
|
||||||
writePinLow(D1);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
return state;
|
|
||||||
}
|
|
|
@ -1,2 +0,0 @@
|
||||||
# The VIA Ext65 Layout
|
|
||||||
|
|
|
@ -1,14 +0,0 @@
|
||||||
EXT65
|
|
||||||
===
|
|
||||||
|
|
||||||
A southpaw inspired keyboard by [aeboards](https://aeboards.com/)
|
|
||||||
|
|
||||||
Keyboard Maintainer: [Xelus22](https://github.com/Xelus22)
|
|
||||||
Hardware Supported: EXT65
|
|
||||||
Hardware Availability: Custom keyboard group buys
|
|
||||||
|
|
||||||
Make example for this keyboard (after setting up your build environment):
|
|
||||||
|
|
||||||
make aeboards/ext65/rev1:default
|
|
||||||
|
|
||||||
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
|
|
|
@ -1,18 +1,32 @@
|
||||||
/* Copyright 2018 Jason Williams (Wilba)
|
#include "rev1.h"
|
||||||
*
|
|
||||||
* 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/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
// Nothing to see here, move along... ;-)
|
void keyboard_pre_init_user(void) {
|
||||||
|
// Call the keyboard pre init code.
|
||||||
|
// Set our LED pins as output
|
||||||
|
setPinOutput(D5);
|
||||||
|
setPinOutput(D3);
|
||||||
|
setPinOutput(D2);
|
||||||
|
setPinOutput(D1);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool led_update_kb(led_t led_state) {
|
||||||
|
bool res = led_update_user(led_state);
|
||||||
|
if(res) {
|
||||||
|
writePin(D5, led_state.num_lock);
|
||||||
|
writePin(D3, led_state.caps_lock);
|
||||||
|
writePin(D2, led_state.scroll_lock);
|
||||||
|
}
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
layer_state_t layer_state_set_kb(layer_state_t state) {
|
||||||
|
switch (get_highest_layer(state)) {
|
||||||
|
case 1:
|
||||||
|
writePinHigh(D1);
|
||||||
|
break;
|
||||||
|
default: // for any other layers, or the default layer
|
||||||
|
writePinLow(D1);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return layer_state_set_user(state);
|
||||||
|
}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright 2018 Jason Williams (Wilba)
|
/* Copyright 2020 Harrison Chan (Xelus)
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* 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
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
@ -16,6 +16,7 @@
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
#include "ext65.h"
|
||||||
#include "quantum.h"
|
#include "quantum.h"
|
||||||
|
|
||||||
#define ____ KC_NO
|
#define ____ KC_NO
|
||||||
|
|
|
@ -21,7 +21,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
#define VENDOR_ID 0x4145 // "AE"
|
#define VENDOR_ID 0x4145 // "AE"
|
||||||
#define PRODUCT_ID 0xA652 // AEboards EXT65 Rev2
|
#define PRODUCT_ID 0xA652 // AEboards EXT65 Rev2
|
||||||
#define DEVICE_VER 0x0001
|
#define DEVICE_VER 0x0001
|
||||||
#define MANUFACTURER AEboards
|
#define MANUFACTURER AEBoards
|
||||||
#define PRODUCT AEBoards Ext65 Rev2
|
#define PRODUCT AEBoards Ext65 Rev2
|
||||||
|
|
||||||
/* key matrix size */
|
/* key matrix size */
|
||||||
|
|
|
@ -1,5 +1,22 @@
|
||||||
|
/* Copyright 2020 Harrison Chan (Xelus)
|
||||||
|
*
|
||||||
|
* 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/>.
|
||||||
|
*/
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
#include "ext65.h"
|
||||||
#include "quantum.h"
|
#include "quantum.h"
|
||||||
|
|
||||||
#define ____ KC_NO
|
#define ____ KC_NO
|
||||||
|
|
1
keyboards/aeboards/ext65/rules.mk
Normal file
1
keyboards/aeboards/ext65/rules.mk
Normal file
|
@ -0,0 +1 @@
|
||||||
|
DEFAULT_FOLDER = aeboards/ext65/rev2
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
Copyright 2019 Maarten Dekkers <maartenwut@gmail.com>
|
Copyright 2019 Evy Dekkers
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
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
|
it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
Copyright 2019 Maarten Dekkers <maartenwut@gmail.com>
|
Copyright 2019 Evy Dekkers
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
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
|
it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -1 +1,6 @@
|
||||||
#include "660m.h"
|
#include "660m.h"
|
||||||
|
|
||||||
|
void board_init(void) {
|
||||||
|
SYSCFG->CFGR1 |= SYSCFG_CFGR1_I2C1_DMA_RMP;
|
||||||
|
SYSCFG->CFGR1 &= ~(SYSCFG_CFGR1_SPI2_DMA_RMP);
|
||||||
|
}
|
||||||
|
|
|
@ -1,268 +0,0 @@
|
||||||
/*
|
|
||||||
ChibiOS - Copyright (C) 2006..2018 Giovanni Di Sirio
|
|
||||||
|
|
||||||
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.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
* This file has been automatically generated using ChibiStudio board
|
|
||||||
* generator plugin. Do not edit manually.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "hal.h"
|
|
||||||
#include "stm32_gpio.h"
|
|
||||||
|
|
||||||
/*===========================================================================*/
|
|
||||||
/* Driver local definitions. */
|
|
||||||
/*===========================================================================*/
|
|
||||||
|
|
||||||
/*===========================================================================*/
|
|
||||||
/* Driver exported variables. */
|
|
||||||
/*===========================================================================*/
|
|
||||||
|
|
||||||
/*===========================================================================*/
|
|
||||||
/* Driver local variables and types. */
|
|
||||||
/*===========================================================================*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Type of STM32 GPIO port setup.
|
|
||||||
*/
|
|
||||||
typedef struct {
|
|
||||||
uint32_t moder;
|
|
||||||
uint32_t otyper;
|
|
||||||
uint32_t ospeedr;
|
|
||||||
uint32_t pupdr;
|
|
||||||
uint32_t odr;
|
|
||||||
uint32_t afrl;
|
|
||||||
uint32_t afrh;
|
|
||||||
} gpio_setup_t;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Type of STM32 GPIO initialization data.
|
|
||||||
*/
|
|
||||||
typedef struct {
|
|
||||||
#if STM32_HAS_GPIOA || defined(__DOXYGEN__)
|
|
||||||
gpio_setup_t PAData;
|
|
||||||
#endif
|
|
||||||
#if STM32_HAS_GPIOB || defined(__DOXYGEN__)
|
|
||||||
gpio_setup_t PBData;
|
|
||||||
#endif
|
|
||||||
#if STM32_HAS_GPIOC || defined(__DOXYGEN__)
|
|
||||||
gpio_setup_t PCData;
|
|
||||||
#endif
|
|
||||||
#if STM32_HAS_GPIOD || defined(__DOXYGEN__)
|
|
||||||
gpio_setup_t PDData;
|
|
||||||
#endif
|
|
||||||
#if STM32_HAS_GPIOE || defined(__DOXYGEN__)
|
|
||||||
gpio_setup_t PEData;
|
|
||||||
#endif
|
|
||||||
#if STM32_HAS_GPIOF || defined(__DOXYGEN__)
|
|
||||||
gpio_setup_t PFData;
|
|
||||||
#endif
|
|
||||||
#if STM32_HAS_GPIOG || defined(__DOXYGEN__)
|
|
||||||
gpio_setup_t PGData;
|
|
||||||
#endif
|
|
||||||
#if STM32_HAS_GPIOH || defined(__DOXYGEN__)
|
|
||||||
gpio_setup_t PHData;
|
|
||||||
#endif
|
|
||||||
#if STM32_HAS_GPIOI || defined(__DOXYGEN__)
|
|
||||||
gpio_setup_t PIData;
|
|
||||||
#endif
|
|
||||||
#if STM32_HAS_GPIOJ || defined(__DOXYGEN__)
|
|
||||||
gpio_setup_t PJData;
|
|
||||||
#endif
|
|
||||||
#if STM32_HAS_GPIOK || defined(__DOXYGEN__)
|
|
||||||
gpio_setup_t PKData;
|
|
||||||
#endif
|
|
||||||
} gpio_config_t;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief STM32 GPIO static initialization data.
|
|
||||||
*/
|
|
||||||
static const gpio_config_t gpio_default_config = {
|
|
||||||
#if STM32_HAS_GPIOA
|
|
||||||
{VAL_GPIOA_MODER, VAL_GPIOA_OTYPER, VAL_GPIOA_OSPEEDR, VAL_GPIOA_PUPDR,
|
|
||||||
VAL_GPIOA_ODR, VAL_GPIOA_AFRL, VAL_GPIOA_AFRH},
|
|
||||||
#endif
|
|
||||||
#if STM32_HAS_GPIOB
|
|
||||||
{VAL_GPIOB_MODER, VAL_GPIOB_OTYPER, VAL_GPIOB_OSPEEDR, VAL_GPIOB_PUPDR,
|
|
||||||
VAL_GPIOB_ODR, VAL_GPIOB_AFRL, VAL_GPIOB_AFRH},
|
|
||||||
#endif
|
|
||||||
#if STM32_HAS_GPIOC
|
|
||||||
{VAL_GPIOC_MODER, VAL_GPIOC_OTYPER, VAL_GPIOC_OSPEEDR, VAL_GPIOC_PUPDR,
|
|
||||||
VAL_GPIOC_ODR, VAL_GPIOC_AFRL, VAL_GPIOC_AFRH},
|
|
||||||
#endif
|
|
||||||
#if STM32_HAS_GPIOD
|
|
||||||
{VAL_GPIOD_MODER, VAL_GPIOD_OTYPER, VAL_GPIOD_OSPEEDR, VAL_GPIOD_PUPDR,
|
|
||||||
VAL_GPIOD_ODR, VAL_GPIOD_AFRL, VAL_GPIOD_AFRH},
|
|
||||||
#endif
|
|
||||||
#if STM32_HAS_GPIOE
|
|
||||||
{VAL_GPIOE_MODER, VAL_GPIOE_OTYPER, VAL_GPIOE_OSPEEDR, VAL_GPIOE_PUPDR,
|
|
||||||
VAL_GPIOE_ODR, VAL_GPIOE_AFRL, VAL_GPIOE_AFRH},
|
|
||||||
#endif
|
|
||||||
#if STM32_HAS_GPIOF
|
|
||||||
{VAL_GPIOF_MODER, VAL_GPIOF_OTYPER, VAL_GPIOF_OSPEEDR, VAL_GPIOF_PUPDR,
|
|
||||||
VAL_GPIOF_ODR, VAL_GPIOF_AFRL, VAL_GPIOF_AFRH},
|
|
||||||
#endif
|
|
||||||
#if STM32_HAS_GPIOG
|
|
||||||
{VAL_GPIOG_MODER, VAL_GPIOG_OTYPER, VAL_GPIOG_OSPEEDR, VAL_GPIOG_PUPDR,
|
|
||||||
VAL_GPIOG_ODR, VAL_GPIOG_AFRL, VAL_GPIOG_AFRH},
|
|
||||||
#endif
|
|
||||||
#if STM32_HAS_GPIOH
|
|
||||||
{VAL_GPIOH_MODER, VAL_GPIOH_OTYPER, VAL_GPIOH_OSPEEDR, VAL_GPIOH_PUPDR,
|
|
||||||
VAL_GPIOH_ODR, VAL_GPIOH_AFRL, VAL_GPIOH_AFRH},
|
|
||||||
#endif
|
|
||||||
#if STM32_HAS_GPIOI
|
|
||||||
{VAL_GPIOI_MODER, VAL_GPIOI_OTYPER, VAL_GPIOI_OSPEEDR, VAL_GPIOI_PUPDR,
|
|
||||||
VAL_GPIOI_ODR, VAL_GPIOI_AFRL, VAL_GPIOI_AFRH},
|
|
||||||
#endif
|
|
||||||
#if STM32_HAS_GPIOJ
|
|
||||||
{VAL_GPIOJ_MODER, VAL_GPIOJ_OTYPER, VAL_GPIOJ_OSPEEDR, VAL_GPIOJ_PUPDR,
|
|
||||||
VAL_GPIOJ_ODR, VAL_GPIOJ_AFRL, VAL_GPIOJ_AFRH},
|
|
||||||
#endif
|
|
||||||
#if STM32_HAS_GPIOK
|
|
||||||
{VAL_GPIOK_MODER, VAL_GPIOK_OTYPER, VAL_GPIOK_OSPEEDR, VAL_GPIOK_PUPDR,
|
|
||||||
VAL_GPIOK_ODR, VAL_GPIOK_AFRL, VAL_GPIOK_AFRH}
|
|
||||||
#endif
|
|
||||||
};
|
|
||||||
|
|
||||||
/*===========================================================================*/
|
|
||||||
/* Driver local functions. */
|
|
||||||
/*===========================================================================*/
|
|
||||||
|
|
||||||
static void gpio_init(stm32_gpio_t *gpiop, const gpio_setup_t *config) {
|
|
||||||
|
|
||||||
gpiop->OTYPER = config->otyper;
|
|
||||||
gpiop->OSPEEDR = config->ospeedr;
|
|
||||||
gpiop->PUPDR = config->pupdr;
|
|
||||||
gpiop->ODR = config->odr;
|
|
||||||
gpiop->AFRL = config->afrl;
|
|
||||||
gpiop->AFRH = config->afrh;
|
|
||||||
gpiop->MODER = config->moder;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void stm32_gpio_init(void) {
|
|
||||||
|
|
||||||
/* Enabling GPIO-related clocks, the mask comes from the
|
|
||||||
registry header file.*/
|
|
||||||
rccResetAHB(STM32_GPIO_EN_MASK);
|
|
||||||
rccEnableAHB(STM32_GPIO_EN_MASK, true);
|
|
||||||
|
|
||||||
/* Initializing all the defined GPIO ports.*/
|
|
||||||
#if STM32_HAS_GPIOA
|
|
||||||
gpio_init(GPIOA, &gpio_default_config.PAData);
|
|
||||||
#endif
|
|
||||||
#if STM32_HAS_GPIOB
|
|
||||||
gpio_init(GPIOB, &gpio_default_config.PBData);
|
|
||||||
#endif
|
|
||||||
#if STM32_HAS_GPIOC
|
|
||||||
gpio_init(GPIOC, &gpio_default_config.PCData);
|
|
||||||
#endif
|
|
||||||
#if STM32_HAS_GPIOD
|
|
||||||
gpio_init(GPIOD, &gpio_default_config.PDData);
|
|
||||||
#endif
|
|
||||||
#if STM32_HAS_GPIOE
|
|
||||||
gpio_init(GPIOE, &gpio_default_config.PEData);
|
|
||||||
#endif
|
|
||||||
#if STM32_HAS_GPIOF
|
|
||||||
gpio_init(GPIOF, &gpio_default_config.PFData);
|
|
||||||
#endif
|
|
||||||
#if STM32_HAS_GPIOG
|
|
||||||
gpio_init(GPIOG, &gpio_default_config.PGData);
|
|
||||||
#endif
|
|
||||||
#if STM32_HAS_GPIOH
|
|
||||||
gpio_init(GPIOH, &gpio_default_config.PHData);
|
|
||||||
#endif
|
|
||||||
#if STM32_HAS_GPIOI
|
|
||||||
gpio_init(GPIOI, &gpio_default_config.PIData);
|
|
||||||
#endif
|
|
||||||
#if STM32_HAS_GPIOJ
|
|
||||||
gpio_init(GPIOJ, &gpio_default_config.PJData);
|
|
||||||
#endif
|
|
||||||
#if STM32_HAS_GPIOK
|
|
||||||
gpio_init(GPIOK, &gpio_default_config.PKData);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
/*===========================================================================*/
|
|
||||||
/* Driver interrupt handlers. */
|
|
||||||
/*===========================================================================*/
|
|
||||||
|
|
||||||
/*===========================================================================*/
|
|
||||||
/* Driver exported functions. */
|
|
||||||
/*===========================================================================*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Early initialization code.
|
|
||||||
* @details GPIO ports and system clocks are initialized before everything
|
|
||||||
* else.
|
|
||||||
*/
|
|
||||||
void __early_init(void) {
|
|
||||||
extern void enter_bootloader_mode_if_requested(void);
|
|
||||||
enter_bootloader_mode_if_requested();
|
|
||||||
stm32_gpio_init();
|
|
||||||
stm32_clock_init();
|
|
||||||
}
|
|
||||||
|
|
||||||
#if HAL_USE_SDC || defined(__DOXYGEN__)
|
|
||||||
/**
|
|
||||||
* @brief SDC card detection.
|
|
||||||
*/
|
|
||||||
bool sdc_lld_is_card_inserted(SDCDriver *sdcp) {
|
|
||||||
|
|
||||||
(void)sdcp;
|
|
||||||
/* TODO: Fill the implementation.*/
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief SDC card write protection detection.
|
|
||||||
*/
|
|
||||||
bool sdc_lld_is_write_protected(SDCDriver *sdcp) {
|
|
||||||
|
|
||||||
(void)sdcp;
|
|
||||||
/* TODO: Fill the implementation.*/
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
#endif /* HAL_USE_SDC */
|
|
||||||
|
|
||||||
#if HAL_USE_MMC_SPI || defined(__DOXYGEN__)
|
|
||||||
/**
|
|
||||||
* @brief MMC_SPI card detection.
|
|
||||||
*/
|
|
||||||
bool mmc_lld_is_card_inserted(MMCDriver *mmcp) {
|
|
||||||
|
|
||||||
(void)mmcp;
|
|
||||||
/* TODO: Fill the implementation.*/
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief MMC_SPI card write protection detection.
|
|
||||||
*/
|
|
||||||
bool mmc_lld_is_write_protected(MMCDriver *mmcp) {
|
|
||||||
|
|
||||||
(void)mmcp;
|
|
||||||
/* TODO: Fill the implementation.*/
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Board-specific initialization code.
|
|
||||||
* @todo Add your board-specific code, if any.
|
|
||||||
*/
|
|
||||||
void boardInit(void) {
|
|
||||||
SYSCFG->CFGR1 |= SYSCFG_CFGR1_I2C1_DMA_RMP;
|
|
||||||
SYSCFG->CFGR1 &= ~(SYSCFG_CFGR1_SPI2_DMA_RMP);
|
|
||||||
}
|
|
|
@ -1,940 +0,0 @@
|
||||||
/*
|
|
||||||
ChibiOS - Copyright (C) 2006..2016 Giovanni Di Sirio
|
|
||||||
|
|
||||||
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.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
* This file has been automatically generated using ChibiStudio board
|
|
||||||
* generator plugin. Do not edit manually.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef BOARD_H
|
|
||||||
#define BOARD_H
|
|
||||||
|
|
||||||
/*===========================================================================*/
|
|
||||||
/* Driver constants. */
|
|
||||||
/*===========================================================================*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Setup for ST STM32F072B-Discovery board.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Board identifier.
|
|
||||||
*/
|
|
||||||
#define BOARD_ST_STM32F072B_DISCOVERY
|
|
||||||
#define BOARD_NAME "ST STM32F072B-Discovery"
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Board oscillators-related settings.
|
|
||||||
* NOTE: HSE not fitted.
|
|
||||||
*/
|
|
||||||
#if !defined(STM32_LSECLK)
|
|
||||||
#define STM32_LSECLK 32768
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define STM32_LSEDRV (3U << 3U)
|
|
||||||
|
|
||||||
#if !defined(STM32_HSECLK)
|
|
||||||
#define STM32_HSECLK 0U
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define STM32_HSE_BYPASS
|
|
||||||
|
|
||||||
/*
|
|
||||||
* MCU type as defined in the ST header.
|
|
||||||
*/
|
|
||||||
#define STM32F072xB
|
|
||||||
|
|
||||||
/*
|
|
||||||
* IO pins assignments.
|
|
||||||
*/
|
|
||||||
#define GPIOA_BUTTON 0U
|
|
||||||
#define GPIOA_PIN1 1U
|
|
||||||
#define GPIOA_PIN2 2U
|
|
||||||
#define GPIOA_PIN3 3U
|
|
||||||
#define GPIOA_PIN4 4U
|
|
||||||
#define GPIOA_PIN5 5U
|
|
||||||
#define GPIOA_PIN6 6U
|
|
||||||
#define GPIOA_PIN7 7U
|
|
||||||
#define GPIOA_PIN8 8U
|
|
||||||
#define GPIOA_PIN9 9U
|
|
||||||
#define GPIOA_PIN10 10U
|
|
||||||
#define GPIOA_USB_DM 11U
|
|
||||||
#define GPIOA_USB_DP 12U
|
|
||||||
#define GPIOA_SWDIO 13U
|
|
||||||
#define GPIOA_SWCLK 14U
|
|
||||||
#define GPIOA_PIN15 15U
|
|
||||||
|
|
||||||
#define GPIOB_PIN0 0U
|
|
||||||
#define GPIOB_PIN1 1U
|
|
||||||
#define GPIOB_PIN2 2U
|
|
||||||
#define GPIOB_PIN3 3U
|
|
||||||
#define GPIOB_PIN4 4U
|
|
||||||
#define GPIOB_PIN5 5U
|
|
||||||
#define GPIOB_PIN6 6U
|
|
||||||
#define GPIOB_PIN7 7U
|
|
||||||
#define GPIOB_PIN8 8U
|
|
||||||
#define GPIOB_PIN9 9U
|
|
||||||
#define GPIOB_PIN10 10U
|
|
||||||
#define GPIOB_PIN11 11U
|
|
||||||
#define GPIOB_PIN12 12U
|
|
||||||
#define GPIOB_SPI2_SCK 13U
|
|
||||||
#define GPIOB_SPI2_MISO 14U
|
|
||||||
#define GPIOB_SPI2_MOSI 15U
|
|
||||||
|
|
||||||
#define GPIOC_MEMS_CS 0U
|
|
||||||
#define GPIOC_PIN1 1U
|
|
||||||
#define GPIOC_PIN2 2U
|
|
||||||
#define GPIOC_PIN3 3U
|
|
||||||
#define GPIOC_PIN4 4U
|
|
||||||
#define GPIOC_PIN5 5U
|
|
||||||
#define GPIOC_LED_RED 6U
|
|
||||||
#define GPIOC_LED_BLUE 7U
|
|
||||||
#define GPIOC_LED_ORANGE 8U
|
|
||||||
#define GPIOC_LED_GREEN 9U
|
|
||||||
#define GPIOC_PIN10 10U
|
|
||||||
#define GPIOC_PIN11 11U
|
|
||||||
#define GPIOC_PIN12 12U
|
|
||||||
#define GPIOC_PIN13 13U
|
|
||||||
#define GPIOC_OSC32_IN 14U
|
|
||||||
#define GPIOC_OSC32_OUT 15U
|
|
||||||
|
|
||||||
#define GPIOD_PIN0 0U
|
|
||||||
#define GPIOD_PIN1 1U
|
|
||||||
#define GPIOD_PIN2 2U
|
|
||||||
#define GPIOD_PIN3 3U
|
|
||||||
#define GPIOD_PIN4 4U
|
|
||||||
#define GPIOD_PIN5 5U
|
|
||||||
#define GPIOD_PIN6 6U
|
|
||||||
#define GPIOD_PIN7 7U
|
|
||||||
#define GPIOD_PIN8 8U
|
|
||||||
#define GPIOD_PIN9 9U
|
|
||||||
#define GPIOD_PIN10 10U
|
|
||||||
#define GPIOD_PIN11 11U
|
|
||||||
#define GPIOD_PIN12 12U
|
|
||||||
#define GPIOD_PIN13 13U
|
|
||||||
#define GPIOD_PIN14 14U
|
|
||||||
#define GPIOD_PIN15 15U
|
|
||||||
|
|
||||||
#define GPIOE_PIN0 0U
|
|
||||||
#define GPIOE_PIN1 1U
|
|
||||||
#define GPIOE_PIN2 2U
|
|
||||||
#define GPIOE_PIN3 3U
|
|
||||||
#define GPIOE_PIN4 4U
|
|
||||||
#define GPIOE_PIN5 5U
|
|
||||||
#define GPIOE_PIN6 6U
|
|
||||||
#define GPIOE_PIN7 7U
|
|
||||||
#define GPIOE_PIN8 8U
|
|
||||||
#define GPIOE_PIN9 9U
|
|
||||||
#define GPIOE_PIN10 10U
|
|
||||||
#define GPIOE_PIN11 11U
|
|
||||||
#define GPIOE_PIN12 12U
|
|
||||||
#define GPIOE_PIN13 13U
|
|
||||||
#define GPIOE_PIN14 14U
|
|
||||||
#define GPIOE_PIN15 15U
|
|
||||||
|
|
||||||
#define GPIOF_OSC_IN 0U
|
|
||||||
#define GPIOF_OSC_OUT 1U
|
|
||||||
#define GPIOF_PIN2 2U
|
|
||||||
#define GPIOF_PIN3 3U
|
|
||||||
#define GPIOF_PIN4 4U
|
|
||||||
#define GPIOF_PIN5 5U
|
|
||||||
#define GPIOF_PIN6 6U
|
|
||||||
#define GPIOF_PIN7 7U
|
|
||||||
#define GPIOF_PIN8 8U
|
|
||||||
#define GPIOF_PIN9 9U
|
|
||||||
#define GPIOF_PIN10 10U
|
|
||||||
#define GPIOF_PIN11 11U
|
|
||||||
#define GPIOF_PIN12 12U
|
|
||||||
#define GPIOF_PIN13 13U
|
|
||||||
#define GPIOF_PIN14 14U
|
|
||||||
#define GPIOF_PIN15 15U
|
|
||||||
|
|
||||||
/*
|
|
||||||
* IO lines assignments.
|
|
||||||
*/
|
|
||||||
#define LINE_BUTTON PAL_LINE(GPIOA, 0U)
|
|
||||||
#define LINE_USB_DM PAL_LINE(GPIOA, 11U)
|
|
||||||
#define LINE_USB_DP PAL_LINE(GPIOA, 12U)
|
|
||||||
#define LINE_SWDIO PAL_LINE(GPIOA, 13U)
|
|
||||||
#define LINE_SWCLK PAL_LINE(GPIOA, 14U)
|
|
||||||
#define LINE_SPI2_SCK PAL_LINE(GPIOB, 13U)
|
|
||||||
#define LINE_SPI2_MISO PAL_LINE(GPIOB, 14U)
|
|
||||||
#define LINE_SPI2_MOSI PAL_LINE(GPIOB, 15U)
|
|
||||||
#define LINE_MEMS_CS PAL_LINE(GPIOC, 0U)
|
|
||||||
#define LINE_LED_RED PAL_LINE(GPIOC, 6U)
|
|
||||||
#define LINE_LED_BLUE PAL_LINE(GPIOC, 7U)
|
|
||||||
#define LINE_LED_ORANGE PAL_LINE(GPIOC, 8U)
|
|
||||||
#define LINE_LED_GREEN PAL_LINE(GPIOC, 9U)
|
|
||||||
#define LINE_OSC32_IN PAL_LINE(GPIOC, 14U)
|
|
||||||
#define LINE_OSC32_OUT PAL_LINE(GPIOC, 15U)
|
|
||||||
#define LINE_OSC_IN PAL_LINE(GPIOF, 0U)
|
|
||||||
#define LINE_OSC_OUT PAL_LINE(GPIOF, 1U)
|
|
||||||
|
|
||||||
/*===========================================================================*/
|
|
||||||
/* Driver pre-compile time settings. */
|
|
||||||
/*===========================================================================*/
|
|
||||||
|
|
||||||
/*===========================================================================*/
|
|
||||||
/* Derived constants and error checks. */
|
|
||||||
/*===========================================================================*/
|
|
||||||
|
|
||||||
/*===========================================================================*/
|
|
||||||
/* Driver data structures and types. */
|
|
||||||
/*===========================================================================*/
|
|
||||||
|
|
||||||
/*===========================================================================*/
|
|
||||||
/* Driver macros. */
|
|
||||||
/*===========================================================================*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
* I/O ports initial setup, this configuration is established soon after reset
|
|
||||||
* in the initialization code.
|
|
||||||
* Please refer to the STM32 Reference Manual for details.
|
|
||||||
*/
|
|
||||||
#define PIN_MODE_INPUT(n) (0U << ((n) * 2U))
|
|
||||||
#define PIN_MODE_OUTPUT(n) (1U << ((n) * 2U))
|
|
||||||
#define PIN_MODE_ALTERNATE(n) (2U << ((n) * 2U))
|
|
||||||
#define PIN_MODE_ANALOG(n) (3U << ((n) * 2U))
|
|
||||||
#define PIN_ODR_LOW(n) (0U << (n))
|
|
||||||
#define PIN_ODR_HIGH(n) (1U << (n))
|
|
||||||
#define PIN_OTYPE_PUSHPULL(n) (0U << (n))
|
|
||||||
#define PIN_OTYPE_OPENDRAIN(n) (1U << (n))
|
|
||||||
#define PIN_OSPEED_VERYLOW(n) (0U << ((n) * 2U))
|
|
||||||
#define PIN_OSPEED_LOW(n) (1U << ((n) * 2U))
|
|
||||||
#define PIN_OSPEED_MEDIUM(n) (2U << ((n) * 2U))
|
|
||||||
#define PIN_OSPEED_HIGH(n) (3U << ((n) * 2U))
|
|
||||||
#define PIN_PUPDR_FLOATING(n) (0U << ((n) * 2U))
|
|
||||||
#define PIN_PUPDR_PULLUP(n) (1U << ((n) * 2U))
|
|
||||||
#define PIN_PUPDR_PULLDOWN(n) (2U << ((n) * 2U))
|
|
||||||
#define PIN_AFIO_AF(n, v) ((v) << (((n) % 8U) * 4U))
|
|
||||||
|
|
||||||
/*
|
|
||||||
* GPIOA setup:
|
|
||||||
*
|
|
||||||
* PA0 - BUTTON (input floating).
|
|
||||||
* PA1 - PIN1 (input pullup).
|
|
||||||
* PA2 - PIN2 (input pullup).
|
|
||||||
* PA3 - PIN3 (input pullup).
|
|
||||||
* PA4 - PIN4 (input pullup).
|
|
||||||
* PA5 - PIN5 (input pullup).
|
|
||||||
* PA6 - PIN6 (input pullup).
|
|
||||||
* PA7 - PIN7 (input pullup).
|
|
||||||
* PA8 - PIN8 (input pullup).
|
|
||||||
* PA9 - PIN9 (input pullup).
|
|
||||||
* PA10 - PIN10 (input pullup).
|
|
||||||
* PA11 - USB_DM (input floating).
|
|
||||||
* PA12 - USB_DP (input floating).
|
|
||||||
* PA13 - SWDIO (alternate 0).
|
|
||||||
* PA14 - SWCLK (alternate 0).
|
|
||||||
* PA15 - PIN15 (input pullup).
|
|
||||||
*/
|
|
||||||
#define VAL_GPIOA_MODER (PIN_MODE_INPUT(GPIOA_BUTTON) | \
|
|
||||||
PIN_MODE_INPUT(GPIOA_PIN1) | \
|
|
||||||
PIN_MODE_INPUT(GPIOA_PIN2) | \
|
|
||||||
PIN_MODE_INPUT(GPIOA_PIN3) | \
|
|
||||||
PIN_MODE_INPUT(GPIOA_PIN4) | \
|
|
||||||
PIN_MODE_INPUT(GPIOA_PIN5) | \
|
|
||||||
PIN_MODE_INPUT(GPIOA_PIN6) | \
|
|
||||||
PIN_MODE_INPUT(GPIOA_PIN7) | \
|
|
||||||
PIN_MODE_INPUT(GPIOA_PIN8) | \
|
|
||||||
PIN_MODE_INPUT(GPIOA_PIN9) | \
|
|
||||||
PIN_MODE_INPUT(GPIOA_PIN10) | \
|
|
||||||
PIN_MODE_INPUT(GPIOA_USB_DM) | \
|
|
||||||
PIN_MODE_INPUT(GPIOA_USB_DP) | \
|
|
||||||
PIN_MODE_ALTERNATE(GPIOA_SWDIO) | \
|
|
||||||
PIN_MODE_ALTERNATE(GPIOA_SWCLK) | \
|
|
||||||
PIN_MODE_INPUT(GPIOA_PIN15))
|
|
||||||
#define VAL_GPIOA_OTYPER (PIN_OTYPE_PUSHPULL(GPIOA_BUTTON) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOA_PIN1) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOA_PIN2) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOA_PIN3) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOA_PIN4) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOA_PIN5) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOA_PIN6) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOA_PIN7) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOA_PIN8) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOA_PIN9) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOA_PIN10) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOA_USB_DM) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOA_USB_DP) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOA_SWDIO) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOA_SWCLK) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOA_PIN15))
|
|
||||||
#define VAL_GPIOA_OSPEEDR (PIN_OSPEED_VERYLOW(GPIOA_BUTTON) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOA_PIN1) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOA_PIN2) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOA_PIN3) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOA_PIN4) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOA_PIN5) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOA_PIN6) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOA_PIN7) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOA_PIN8) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOA_PIN9) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOA_PIN10) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOA_USB_DM) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOA_USB_DP) | \
|
|
||||||
PIN_OSPEED_HIGH(GPIOA_SWDIO) | \
|
|
||||||
PIN_OSPEED_HIGH(GPIOA_SWCLK) | \
|
|
||||||
PIN_OSPEED_HIGH(GPIOA_PIN15))
|
|
||||||
#define VAL_GPIOA_PUPDR (PIN_PUPDR_FLOATING(GPIOA_BUTTON) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOA_PIN1) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOA_PIN2) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOA_PIN3) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOA_PIN4) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOA_PIN5) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOA_PIN6) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOA_PIN7) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOA_PIN8) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOA_PIN9) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOA_PIN10) | \
|
|
||||||
PIN_PUPDR_FLOATING(GPIOA_USB_DM) | \
|
|
||||||
PIN_PUPDR_FLOATING(GPIOA_USB_DP) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOA_SWDIO) | \
|
|
||||||
PIN_PUPDR_PULLDOWN(GPIOA_SWCLK) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOA_PIN15))
|
|
||||||
#define VAL_GPIOA_ODR (PIN_ODR_HIGH(GPIOA_BUTTON) | \
|
|
||||||
PIN_ODR_HIGH(GPIOA_PIN1) | \
|
|
||||||
PIN_ODR_HIGH(GPIOA_PIN2) | \
|
|
||||||
PIN_ODR_HIGH(GPIOA_PIN3) | \
|
|
||||||
PIN_ODR_HIGH(GPIOA_PIN4) | \
|
|
||||||
PIN_ODR_HIGH(GPIOA_PIN5) | \
|
|
||||||
PIN_ODR_HIGH(GPIOA_PIN6) | \
|
|
||||||
PIN_ODR_HIGH(GPIOA_PIN7) | \
|
|
||||||
PIN_ODR_HIGH(GPIOA_PIN8) | \
|
|
||||||
PIN_ODR_HIGH(GPIOA_PIN9) | \
|
|
||||||
PIN_ODR_HIGH(GPIOA_PIN10) | \
|
|
||||||
PIN_ODR_HIGH(GPIOA_USB_DM) | \
|
|
||||||
PIN_ODR_HIGH(GPIOA_USB_DP) | \
|
|
||||||
PIN_ODR_HIGH(GPIOA_SWDIO) | \
|
|
||||||
PIN_ODR_HIGH(GPIOA_SWCLK) | \
|
|
||||||
PIN_ODR_HIGH(GPIOA_PIN15))
|
|
||||||
#define VAL_GPIOA_AFRL (PIN_AFIO_AF(GPIOA_BUTTON, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOA_PIN1, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOA_PIN2, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOA_PIN3, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOA_PIN4, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOA_PIN5, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOA_PIN6, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOA_PIN7, 0U))
|
|
||||||
#define VAL_GPIOA_AFRH (PIN_AFIO_AF(GPIOA_PIN8, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOA_PIN9, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOA_PIN10, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOA_USB_DM, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOA_USB_DP, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOA_SWDIO, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOA_SWCLK, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOA_PIN15, 0U))
|
|
||||||
|
|
||||||
/*
|
|
||||||
* GPIOB setup:
|
|
||||||
*
|
|
||||||
* PB0 - PIN0 (input pullup).
|
|
||||||
* PB1 - PIN1 (input pullup).
|
|
||||||
* PB2 - PIN2 (input pullup).
|
|
||||||
* PB3 - PIN3 (input pullup).
|
|
||||||
* PB4 - PIN4 (input pullup).
|
|
||||||
* PB5 - PIN5 (input pullup).
|
|
||||||
* PB6 - PIN6 (input pullup).
|
|
||||||
* PB7 - PIN7 (input pullup).
|
|
||||||
* PB8 - PIN8 (input pullup).
|
|
||||||
* PB9 - PIN9 (input pullup).
|
|
||||||
* PB10 - PIN10 (input pullup).
|
|
||||||
* PB11 - PIN11 (input pullup).
|
|
||||||
* PB12 - PIN12 (input pullup).
|
|
||||||
* PB13 - SPI2_SCK (alternate 0).
|
|
||||||
* PB14 - SPI2_MISO (alternate 0).
|
|
||||||
* PB15 - SPI2_MOSI (alternate 0).
|
|
||||||
*/
|
|
||||||
#define VAL_GPIOB_MODER (PIN_MODE_INPUT(GPIOB_PIN0) | \
|
|
||||||
PIN_MODE_INPUT(GPIOB_PIN1) | \
|
|
||||||
PIN_MODE_INPUT(GPIOB_PIN2) | \
|
|
||||||
PIN_MODE_INPUT(GPIOB_PIN3) | \
|
|
||||||
PIN_MODE_INPUT(GPIOB_PIN4) | \
|
|
||||||
PIN_MODE_INPUT(GPIOB_PIN5) | \
|
|
||||||
PIN_MODE_INPUT(GPIOB_PIN6) | \
|
|
||||||
PIN_MODE_INPUT(GPIOB_PIN7) | \
|
|
||||||
PIN_MODE_INPUT(GPIOB_PIN8) | \
|
|
||||||
PIN_MODE_INPUT(GPIOB_PIN9) | \
|
|
||||||
PIN_MODE_INPUT(GPIOB_PIN10) | \
|
|
||||||
PIN_MODE_INPUT(GPIOB_PIN11) | \
|
|
||||||
PIN_MODE_INPUT(GPIOB_PIN12) | \
|
|
||||||
PIN_MODE_ALTERNATE(GPIOB_SPI2_SCK) | \
|
|
||||||
PIN_MODE_ALTERNATE(GPIOB_SPI2_MISO) | \
|
|
||||||
PIN_MODE_ALTERNATE(GPIOB_SPI2_MOSI))
|
|
||||||
#define VAL_GPIOB_OTYPER (PIN_OTYPE_PUSHPULL(GPIOB_PIN0) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOB_PIN1) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOB_PIN2) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOB_PIN3) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOB_PIN4) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOB_PIN5) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOB_PIN6) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOB_PIN7) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOB_PIN8) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOB_PIN9) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOB_PIN10) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOB_PIN11) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOB_PIN12) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOB_SPI2_SCK) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOB_SPI2_MISO) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOB_SPI2_MOSI))
|
|
||||||
#define VAL_GPIOB_OSPEEDR (PIN_OSPEED_VERYLOW(GPIOB_PIN0) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOB_PIN1) | \
|
|
||||||
PIN_OSPEED_HIGH(GPIOB_PIN2) | \
|
|
||||||
PIN_OSPEED_HIGH(GPIOB_PIN3) | \
|
|
||||||
PIN_OSPEED_HIGH(GPIOB_PIN4) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOB_PIN5) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOB_PIN6) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOB_PIN7) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOB_PIN8) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOB_PIN9) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOB_PIN10) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOB_PIN11) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOB_PIN12) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOB_SPI2_SCK) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOB_SPI2_MISO) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOB_SPI2_MOSI))
|
|
||||||
#define VAL_GPIOB_PUPDR (PIN_PUPDR_PULLUP(GPIOB_PIN0) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOB_PIN1) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOB_PIN2) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOB_PIN3) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOB_PIN4) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOB_PIN5) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOB_PIN6) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOB_PIN7) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOB_PIN8) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOB_PIN9) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOB_PIN10) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOB_PIN11) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOB_PIN12) | \
|
|
||||||
PIN_PUPDR_FLOATING(GPIOB_SPI2_SCK) | \
|
|
||||||
PIN_PUPDR_FLOATING(GPIOB_SPI2_MISO) | \
|
|
||||||
PIN_PUPDR_FLOATING(GPIOB_SPI2_MOSI))
|
|
||||||
#define VAL_GPIOB_ODR (PIN_ODR_HIGH(GPIOB_PIN0) | \
|
|
||||||
PIN_ODR_HIGH(GPIOB_PIN1) | \
|
|
||||||
PIN_ODR_HIGH(GPIOB_PIN2) | \
|
|
||||||
PIN_ODR_HIGH(GPIOB_PIN3) | \
|
|
||||||
PIN_ODR_HIGH(GPIOB_PIN4) | \
|
|
||||||
PIN_ODR_HIGH(GPIOB_PIN5) | \
|
|
||||||
PIN_ODR_HIGH(GPIOB_PIN6) | \
|
|
||||||
PIN_ODR_HIGH(GPIOB_PIN7) | \
|
|
||||||
PIN_ODR_HIGH(GPIOB_PIN8) | \
|
|
||||||
PIN_ODR_HIGH(GPIOB_PIN9) | \
|
|
||||||
PIN_ODR_HIGH(GPIOB_PIN10) | \
|
|
||||||
PIN_ODR_HIGH(GPIOB_PIN11) | \
|
|
||||||
PIN_ODR_HIGH(GPIOB_PIN12) | \
|
|
||||||
PIN_ODR_HIGH(GPIOB_SPI2_SCK) | \
|
|
||||||
PIN_ODR_HIGH(GPIOB_SPI2_MISO) | \
|
|
||||||
PIN_ODR_HIGH(GPIOB_SPI2_MOSI))
|
|
||||||
#define VAL_GPIOB_AFRL (PIN_AFIO_AF(GPIOB_PIN0, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOB_PIN1, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOB_PIN2, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOB_PIN3, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOB_PIN4, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOB_PIN5, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOB_PIN6, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOB_PIN7, 0U))
|
|
||||||
#define VAL_GPIOB_AFRH (PIN_AFIO_AF(GPIOB_PIN8, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOB_PIN9, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOB_PIN10, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOB_PIN11, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOB_PIN12, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOB_SPI2_SCK, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOB_SPI2_MISO, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOB_SPI2_MOSI, 0U))
|
|
||||||
|
|
||||||
/*
|
|
||||||
* GPIOC setup:
|
|
||||||
*
|
|
||||||
* PC0 - MEMS_CS (output pushpull maximum).
|
|
||||||
* PC1 - PIN1 (input pullup).
|
|
||||||
* PC2 - PIN2 (input pullup).
|
|
||||||
* PC3 - PIN3 (input pullup).
|
|
||||||
* PC4 - PIN4 (input pullup).
|
|
||||||
* PC5 - PIN5 (input pullup).
|
|
||||||
* PC6 - LED_RED (output pushpull maximum).
|
|
||||||
* PC7 - LED_BLUE (output pushpull maximum).
|
|
||||||
* PC8 - LED_ORANGE (output pushpull maximum).
|
|
||||||
* PC9 - LED_GREEN (output pushpull maximum).
|
|
||||||
* PC10 - PIN10 (input pullup).
|
|
||||||
* PC11 - PIN11 (input pullup).
|
|
||||||
* PC12 - PIN12 (input pullup).
|
|
||||||
* PC13 - PIN13 (input pullup).
|
|
||||||
* PC14 - OSC32_IN (input floating).
|
|
||||||
* PC15 - OSC32_OUT (input floating).
|
|
||||||
*/
|
|
||||||
#define VAL_GPIOC_MODER (PIN_MODE_OUTPUT(GPIOC_MEMS_CS) | \
|
|
||||||
PIN_MODE_INPUT(GPIOC_PIN1) | \
|
|
||||||
PIN_MODE_INPUT(GPIOC_PIN2) | \
|
|
||||||
PIN_MODE_INPUT(GPIOC_PIN3) | \
|
|
||||||
PIN_MODE_INPUT(GPIOC_PIN4) | \
|
|
||||||
PIN_MODE_INPUT(GPIOC_PIN5) | \
|
|
||||||
PIN_MODE_OUTPUT(GPIOC_LED_RED) | \
|
|
||||||
PIN_MODE_OUTPUT(GPIOC_LED_BLUE) | \
|
|
||||||
PIN_MODE_OUTPUT(GPIOC_LED_ORANGE) | \
|
|
||||||
PIN_MODE_OUTPUT(GPIOC_LED_GREEN) | \
|
|
||||||
PIN_MODE_INPUT(GPIOC_PIN10) | \
|
|
||||||
PIN_MODE_INPUT(GPIOC_PIN11) | \
|
|
||||||
PIN_MODE_INPUT(GPIOC_PIN12) | \
|
|
||||||
PIN_MODE_INPUT(GPIOC_PIN13) | \
|
|
||||||
PIN_MODE_INPUT(GPIOC_OSC32_IN) | \
|
|
||||||
PIN_MODE_INPUT(GPIOC_OSC32_OUT))
|
|
||||||
#define VAL_GPIOC_OTYPER (PIN_OTYPE_PUSHPULL(GPIOC_MEMS_CS) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOC_PIN1) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOC_PIN2) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOC_PIN3) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOC_PIN4) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOC_PIN5) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOC_LED_RED) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOC_LED_BLUE) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOC_LED_ORANGE) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOC_LED_GREEN) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOC_PIN10) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOC_PIN11) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOC_PIN12) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOC_PIN13) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOC_OSC32_IN) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOC_OSC32_OUT))
|
|
||||||
#define VAL_GPIOC_OSPEEDR (PIN_OSPEED_HIGH(GPIOC_MEMS_CS) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOC_PIN1) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOC_PIN2) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOC_PIN3) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOC_PIN4) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOC_PIN5) | \
|
|
||||||
PIN_OSPEED_HIGH(GPIOC_LED_RED) | \
|
|
||||||
PIN_OSPEED_HIGH(GPIOC_LED_BLUE) | \
|
|
||||||
PIN_OSPEED_HIGH(GPIOC_LED_ORANGE) | \
|
|
||||||
PIN_OSPEED_HIGH(GPIOC_LED_GREEN) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOC_PIN10) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOC_PIN11) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOC_PIN12) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOC_PIN13) | \
|
|
||||||
PIN_OSPEED_HIGH(GPIOC_OSC32_IN) | \
|
|
||||||
PIN_OSPEED_HIGH(GPIOC_OSC32_OUT))
|
|
||||||
#define VAL_GPIOC_PUPDR (PIN_PUPDR_FLOATING(GPIOC_MEMS_CS) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOC_PIN1) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOC_PIN2) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOC_PIN3) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOC_PIN4) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOC_PIN5) | \
|
|
||||||
PIN_PUPDR_FLOATING(GPIOC_LED_RED) | \
|
|
||||||
PIN_PUPDR_FLOATING(GPIOC_LED_BLUE) | \
|
|
||||||
PIN_PUPDR_FLOATING(GPIOC_LED_ORANGE) | \
|
|
||||||
PIN_PUPDR_FLOATING(GPIOC_LED_GREEN) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOC_PIN10) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOC_PIN11) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOC_PIN12) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOC_PIN13) | \
|
|
||||||
PIN_PUPDR_FLOATING(GPIOC_OSC32_IN) | \
|
|
||||||
PIN_PUPDR_FLOATING(GPIOC_OSC32_OUT))
|
|
||||||
#define VAL_GPIOC_ODR (PIN_ODR_HIGH(GPIOC_MEMS_CS) | \
|
|
||||||
PIN_ODR_HIGH(GPIOC_PIN1) | \
|
|
||||||
PIN_ODR_HIGH(GPIOC_PIN2) | \
|
|
||||||
PIN_ODR_HIGH(GPIOC_PIN3) | \
|
|
||||||
PIN_ODR_HIGH(GPIOC_PIN4) | \
|
|
||||||
PIN_ODR_HIGH(GPIOC_PIN5) | \
|
|
||||||
PIN_ODR_LOW(GPIOC_LED_RED) | \
|
|
||||||
PIN_ODR_LOW(GPIOC_LED_BLUE) | \
|
|
||||||
PIN_ODR_LOW(GPIOC_LED_ORANGE) | \
|
|
||||||
PIN_ODR_LOW(GPIOC_LED_GREEN) | \
|
|
||||||
PIN_ODR_HIGH(GPIOC_PIN10) | \
|
|
||||||
PIN_ODR_HIGH(GPIOC_PIN11) | \
|
|
||||||
PIN_ODR_HIGH(GPIOC_PIN12) | \
|
|
||||||
PIN_ODR_HIGH(GPIOC_PIN13) | \
|
|
||||||
PIN_ODR_HIGH(GPIOC_OSC32_IN) | \
|
|
||||||
PIN_ODR_HIGH(GPIOC_OSC32_OUT))
|
|
||||||
#define VAL_GPIOC_AFRL (PIN_AFIO_AF(GPIOC_MEMS_CS, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOC_PIN1, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOC_PIN2, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOC_PIN3, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOC_PIN4, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOC_PIN5, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOC_LED_RED, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOC_LED_BLUE, 0U))
|
|
||||||
#define VAL_GPIOC_AFRH (PIN_AFIO_AF(GPIOC_LED_ORANGE, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOC_LED_GREEN, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOC_PIN10, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOC_PIN11, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOC_PIN12, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOC_PIN13, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOC_OSC32_IN, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOC_OSC32_OUT, 0U))
|
|
||||||
|
|
||||||
/*
|
|
||||||
* GPIOD setup:
|
|
||||||
*
|
|
||||||
* PD0 - PIN0 (input pullup).
|
|
||||||
* PD1 - PIN1 (input pullup).
|
|
||||||
* PD2 - PIN2 (input pullup).
|
|
||||||
* PD3 - PIN3 (input pullup).
|
|
||||||
* PD4 - PIN4 (input pullup).
|
|
||||||
* PD5 - PIN5 (input pullup).
|
|
||||||
* PD6 - PIN6 (input pullup).
|
|
||||||
* PD7 - PIN7 (input pullup).
|
|
||||||
* PD8 - PIN8 (input pullup).
|
|
||||||
* PD9 - PIN9 (input pullup).
|
|
||||||
* PD10 - PIN10 (input pullup).
|
|
||||||
* PD11 - PIN11 (input pullup).
|
|
||||||
* PD12 - PIN12 (input pullup).
|
|
||||||
* PD13 - PIN13 (input pullup).
|
|
||||||
* PD14 - PIN14 (input pullup).
|
|
||||||
* PD15 - PIN15 (input pullup).
|
|
||||||
*/
|
|
||||||
#define VAL_GPIOD_MODER (PIN_MODE_INPUT(GPIOD_PIN0) | \
|
|
||||||
PIN_MODE_INPUT(GPIOD_PIN1) | \
|
|
||||||
PIN_MODE_INPUT(GPIOD_PIN2) | \
|
|
||||||
PIN_MODE_INPUT(GPIOD_PIN3) | \
|
|
||||||
PIN_MODE_INPUT(GPIOD_PIN4) | \
|
|
||||||
PIN_MODE_INPUT(GPIOD_PIN5) | \
|
|
||||||
PIN_MODE_INPUT(GPIOD_PIN6) | \
|
|
||||||
PIN_MODE_INPUT(GPIOD_PIN7) | \
|
|
||||||
PIN_MODE_INPUT(GPIOD_PIN8) | \
|
|
||||||
PIN_MODE_INPUT(GPIOD_PIN9) | \
|
|
||||||
PIN_MODE_INPUT(GPIOD_PIN10) | \
|
|
||||||
PIN_MODE_INPUT(GPIOD_PIN11) | \
|
|
||||||
PIN_MODE_INPUT(GPIOD_PIN12) | \
|
|
||||||
PIN_MODE_INPUT(GPIOD_PIN13) | \
|
|
||||||
PIN_MODE_INPUT(GPIOD_PIN14) | \
|
|
||||||
PIN_MODE_INPUT(GPIOD_PIN15))
|
|
||||||
#define VAL_GPIOD_OTYPER (PIN_OTYPE_PUSHPULL(GPIOD_PIN0) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOD_PIN1) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOD_PIN2) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOD_PIN3) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOD_PIN4) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOD_PIN5) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOD_PIN6) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOD_PIN7) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOD_PIN8) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOD_PIN9) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOD_PIN10) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOD_PIN11) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOD_PIN12) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOD_PIN13) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOD_PIN14) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOD_PIN15))
|
|
||||||
#define VAL_GPIOD_OSPEEDR (PIN_OSPEED_VERYLOW(GPIOD_PIN0) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOD_PIN1) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOD_PIN2) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOD_PIN3) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOD_PIN4) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOD_PIN5) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOD_PIN6) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOD_PIN7) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOD_PIN8) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOD_PIN9) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOD_PIN10) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOD_PIN11) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOD_PIN12) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOD_PIN13) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOD_PIN14) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOD_PIN15))
|
|
||||||
#define VAL_GPIOD_PUPDR (PIN_PUPDR_PULLUP(GPIOD_PIN0) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOD_PIN1) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOD_PIN2) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOD_PIN3) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOD_PIN4) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOD_PIN5) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOD_PIN6) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOD_PIN7) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOD_PIN8) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOD_PIN9) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOD_PIN10) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOD_PIN11) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOD_PIN12) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOD_PIN13) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOD_PIN14) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOD_PIN15))
|
|
||||||
#define VAL_GPIOD_ODR (PIN_ODR_HIGH(GPIOD_PIN0) | \
|
|
||||||
PIN_ODR_HIGH(GPIOD_PIN1) | \
|
|
||||||
PIN_ODR_HIGH(GPIOD_PIN2) | \
|
|
||||||
PIN_ODR_HIGH(GPIOD_PIN3) | \
|
|
||||||
PIN_ODR_HIGH(GPIOD_PIN4) | \
|
|
||||||
PIN_ODR_HIGH(GPIOD_PIN5) | \
|
|
||||||
PIN_ODR_HIGH(GPIOD_PIN6) | \
|
|
||||||
PIN_ODR_HIGH(GPIOD_PIN7) | \
|
|
||||||
PIN_ODR_HIGH(GPIOD_PIN8) | \
|
|
||||||
PIN_ODR_HIGH(GPIOD_PIN9) | \
|
|
||||||
PIN_ODR_HIGH(GPIOD_PIN10) | \
|
|
||||||
PIN_ODR_HIGH(GPIOD_PIN11) | \
|
|
||||||
PIN_ODR_HIGH(GPIOD_PIN12) | \
|
|
||||||
PIN_ODR_HIGH(GPIOD_PIN13) | \
|
|
||||||
PIN_ODR_HIGH(GPIOD_PIN14) | \
|
|
||||||
PIN_ODR_HIGH(GPIOD_PIN15))
|
|
||||||
#define VAL_GPIOD_AFRL (PIN_AFIO_AF(GPIOD_PIN0, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOD_PIN1, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOD_PIN2, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOD_PIN3, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOD_PIN4, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOD_PIN5, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOD_PIN6, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOD_PIN7, 0U))
|
|
||||||
#define VAL_GPIOD_AFRH (PIN_AFIO_AF(GPIOD_PIN8, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOD_PIN9, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOD_PIN10, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOD_PIN11, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOD_PIN12, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOD_PIN13, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOD_PIN14, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOD_PIN15, 0U))
|
|
||||||
|
|
||||||
/*
|
|
||||||
* GPIOE setup:
|
|
||||||
*
|
|
||||||
* PE0 - PIN0 (input pullup).
|
|
||||||
* PE1 - PIN1 (input pullup).
|
|
||||||
* PE2 - PIN2 (input pullup).
|
|
||||||
* PE3 - PIN3 (input pullup).
|
|
||||||
* PE4 - PIN4 (input pullup).
|
|
||||||
* PE5 - PIN5 (input pullup).
|
|
||||||
* PE6 - PIN6 (input pullup).
|
|
||||||
* PE7 - PIN7 (input pullup).
|
|
||||||
* PE8 - PIN8 (input pullup).
|
|
||||||
* PE9 - PIN9 (input pullup).
|
|
||||||
* PE10 - PIN10 (input pullup).
|
|
||||||
* PE11 - PIN11 (input pullup).
|
|
||||||
* PE12 - PIN12 (input pullup).
|
|
||||||
* PE13 - PIN13 (input pullup).
|
|
||||||
* PE14 - PIN14 (input pullup).
|
|
||||||
* PE15 - PIN15 (input pullup).
|
|
||||||
*/
|
|
||||||
#define VAL_GPIOE_MODER (PIN_MODE_INPUT(GPIOE_PIN0) | \
|
|
||||||
PIN_MODE_INPUT(GPIOE_PIN1) | \
|
|
||||||
PIN_MODE_INPUT(GPIOE_PIN2) | \
|
|
||||||
PIN_MODE_INPUT(GPIOE_PIN3) | \
|
|
||||||
PIN_MODE_INPUT(GPIOE_PIN4) | \
|
|
||||||
PIN_MODE_INPUT(GPIOE_PIN5) | \
|
|
||||||
PIN_MODE_INPUT(GPIOE_PIN6) | \
|
|
||||||
PIN_MODE_INPUT(GPIOE_PIN7) | \
|
|
||||||
PIN_MODE_INPUT(GPIOE_PIN8) | \
|
|
||||||
PIN_MODE_INPUT(GPIOE_PIN9) | \
|
|
||||||
PIN_MODE_INPUT(GPIOE_PIN10) | \
|
|
||||||
PIN_MODE_INPUT(GPIOE_PIN11) | \
|
|
||||||
PIN_MODE_INPUT(GPIOE_PIN12) | \
|
|
||||||
PIN_MODE_INPUT(GPIOE_PIN13) | \
|
|
||||||
PIN_MODE_INPUT(GPIOE_PIN14) | \
|
|
||||||
PIN_MODE_INPUT(GPIOE_PIN15))
|
|
||||||
#define VAL_GPIOE_OTYPER (PIN_OTYPE_PUSHPULL(GPIOE_PIN0) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOE_PIN1) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOE_PIN2) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOE_PIN3) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOE_PIN4) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOE_PIN5) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOE_PIN6) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOE_PIN7) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOE_PIN8) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOE_PIN9) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOE_PIN10) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOE_PIN11) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOE_PIN12) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOE_PIN13) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOE_PIN14) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOE_PIN15))
|
|
||||||
#define VAL_GPIOE_OSPEEDR (PIN_OSPEED_VERYLOW(GPIOE_PIN0) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOE_PIN1) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOE_PIN2) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOE_PIN3) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOE_PIN4) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOE_PIN5) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOE_PIN6) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOE_PIN7) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOE_PIN8) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOE_PIN9) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOE_PIN10) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOE_PIN11) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOE_PIN12) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOE_PIN13) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOE_PIN14) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOE_PIN15))
|
|
||||||
#define VAL_GPIOE_PUPDR (PIN_PUPDR_PULLUP(GPIOE_PIN0) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOE_PIN1) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOE_PIN2) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOE_PIN3) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOE_PIN4) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOE_PIN5) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOE_PIN6) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOE_PIN7) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOE_PIN8) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOE_PIN9) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOE_PIN10) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOE_PIN11) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOE_PIN12) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOE_PIN13) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOE_PIN14) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOE_PIN15))
|
|
||||||
#define VAL_GPIOE_ODR (PIN_ODR_HIGH(GPIOE_PIN0) | \
|
|
||||||
PIN_ODR_HIGH(GPIOE_PIN1) | \
|
|
||||||
PIN_ODR_HIGH(GPIOE_PIN2) | \
|
|
||||||
PIN_ODR_HIGH(GPIOE_PIN3) | \
|
|
||||||
PIN_ODR_HIGH(GPIOE_PIN4) | \
|
|
||||||
PIN_ODR_HIGH(GPIOE_PIN5) | \
|
|
||||||
PIN_ODR_HIGH(GPIOE_PIN6) | \
|
|
||||||
PIN_ODR_HIGH(GPIOE_PIN7) | \
|
|
||||||
PIN_ODR_HIGH(GPIOE_PIN8) | \
|
|
||||||
PIN_ODR_HIGH(GPIOE_PIN9) | \
|
|
||||||
PIN_ODR_HIGH(GPIOE_PIN10) | \
|
|
||||||
PIN_ODR_HIGH(GPIOE_PIN11) | \
|
|
||||||
PIN_ODR_HIGH(GPIOE_PIN12) | \
|
|
||||||
PIN_ODR_HIGH(GPIOE_PIN13) | \
|
|
||||||
PIN_ODR_HIGH(GPIOE_PIN14) | \
|
|
||||||
PIN_ODR_HIGH(GPIOE_PIN15))
|
|
||||||
#define VAL_GPIOE_AFRL (PIN_AFIO_AF(GPIOE_PIN0, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOE_PIN1, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOE_PIN2, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOE_PIN3, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOE_PIN4, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOE_PIN5, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOE_PIN6, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOE_PIN7, 0U))
|
|
||||||
#define VAL_GPIOE_AFRH (PIN_AFIO_AF(GPIOE_PIN8, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOE_PIN9, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOE_PIN10, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOE_PIN11, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOE_PIN12, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOE_PIN13, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOE_PIN14, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOE_PIN15, 0U))
|
|
||||||
|
|
||||||
/*
|
|
||||||
* GPIOF setup:
|
|
||||||
*
|
|
||||||
* PF0 - OSC_IN (input floating).
|
|
||||||
* PF1 - OSC_OUT (input floating).
|
|
||||||
* PF2 - PIN2 (input pullup).
|
|
||||||
* PF3 - PIN3 (input pullup).
|
|
||||||
* PF4 - PIN4 (input pullup).
|
|
||||||
* PF5 - PIN5 (input pullup).
|
|
||||||
* PF6 - PIN6 (input pullup).
|
|
||||||
* PF7 - PIN7 (input pullup).
|
|
||||||
* PF8 - PIN8 (input pullup).
|
|
||||||
* PF9 - PIN9 (input pullup).
|
|
||||||
* PF10 - PIN10 (input pullup).
|
|
||||||
* PF11 - PIN11 (input pullup).
|
|
||||||
* PF12 - PIN12 (input pullup).
|
|
||||||
* PF13 - PIN13 (input pullup).
|
|
||||||
* PF14 - PIN14 (input pullup).
|
|
||||||
* PF15 - PIN15 (input pullup).
|
|
||||||
*/
|
|
||||||
#define VAL_GPIOF_MODER (PIN_MODE_INPUT(GPIOF_OSC_IN) | \
|
|
||||||
PIN_MODE_INPUT(GPIOF_OSC_OUT) | \
|
|
||||||
PIN_MODE_INPUT(GPIOF_PIN2) | \
|
|
||||||
PIN_MODE_INPUT(GPIOF_PIN3) | \
|
|
||||||
PIN_MODE_INPUT(GPIOF_PIN4) | \
|
|
||||||
PIN_MODE_INPUT(GPIOF_PIN5) | \
|
|
||||||
PIN_MODE_INPUT(GPIOF_PIN6) | \
|
|
||||||
PIN_MODE_INPUT(GPIOF_PIN7) | \
|
|
||||||
PIN_MODE_INPUT(GPIOF_PIN8) | \
|
|
||||||
PIN_MODE_INPUT(GPIOF_PIN9) | \
|
|
||||||
PIN_MODE_INPUT(GPIOF_PIN10) | \
|
|
||||||
PIN_MODE_INPUT(GPIOF_PIN11) | \
|
|
||||||
PIN_MODE_INPUT(GPIOF_PIN12) | \
|
|
||||||
PIN_MODE_INPUT(GPIOF_PIN13) | \
|
|
||||||
PIN_MODE_INPUT(GPIOF_PIN14) | \
|
|
||||||
PIN_MODE_INPUT(GPIOF_PIN15))
|
|
||||||
#define VAL_GPIOF_OTYPER (PIN_OTYPE_PUSHPULL(GPIOF_OSC_IN) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOF_OSC_OUT) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOF_PIN2) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOF_PIN3) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOF_PIN4) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOF_PIN5) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOF_PIN6) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOF_PIN7) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOF_PIN8) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOF_PIN9) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOF_PIN10) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOF_PIN11) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOF_PIN12) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOF_PIN13) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOF_PIN14) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOF_PIN15))
|
|
||||||
#define VAL_GPIOF_OSPEEDR (PIN_OSPEED_VERYLOW(GPIOF_OSC_IN) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOF_OSC_OUT) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOF_PIN2) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOF_PIN3) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOF_PIN4) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOF_PIN5) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOF_PIN6) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOF_PIN7) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOF_PIN8) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOF_PIN9) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOF_PIN10) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOF_PIN11) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOF_PIN12) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOF_PIN13) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOF_PIN14) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOF_PIN15))
|
|
||||||
#define VAL_GPIOF_PUPDR (PIN_PUPDR_FLOATING(GPIOF_OSC_IN) | \
|
|
||||||
PIN_PUPDR_FLOATING(GPIOF_OSC_OUT) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOF_PIN2) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOF_PIN3) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOF_PIN4) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOF_PIN5) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOF_PIN6) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOF_PIN7) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOF_PIN8) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOF_PIN9) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOF_PIN10) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOF_PIN11) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOF_PIN12) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOF_PIN13) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOF_PIN14) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOF_PIN15))
|
|
||||||
#define VAL_GPIOF_ODR (PIN_ODR_HIGH(GPIOF_OSC_IN) | \
|
|
||||||
PIN_ODR_HIGH(GPIOF_OSC_OUT) | \
|
|
||||||
PIN_ODR_HIGH(GPIOF_PIN2) | \
|
|
||||||
PIN_ODR_HIGH(GPIOF_PIN3) | \
|
|
||||||
PIN_ODR_HIGH(GPIOF_PIN4) | \
|
|
||||||
PIN_ODR_HIGH(GPIOF_PIN5) | \
|
|
||||||
PIN_ODR_HIGH(GPIOF_PIN6) | \
|
|
||||||
PIN_ODR_HIGH(GPIOF_PIN7) | \
|
|
||||||
PIN_ODR_HIGH(GPIOF_PIN8) | \
|
|
||||||
PIN_ODR_HIGH(GPIOF_PIN9) | \
|
|
||||||
PIN_ODR_HIGH(GPIOF_PIN10) | \
|
|
||||||
PIN_ODR_HIGH(GPIOF_PIN11) | \
|
|
||||||
PIN_ODR_HIGH(GPIOF_PIN12) | \
|
|
||||||
PIN_ODR_HIGH(GPIOF_PIN13) | \
|
|
||||||
PIN_ODR_HIGH(GPIOF_PIN14) | \
|
|
||||||
PIN_ODR_HIGH(GPIOF_PIN15))
|
|
||||||
#define VAL_GPIOF_AFRL (PIN_AFIO_AF(GPIOF_OSC_IN, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOF_OSC_OUT, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOF_PIN2, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOF_PIN3, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOF_PIN4, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOF_PIN5, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOF_PIN6, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOF_PIN7, 0U))
|
|
||||||
#define VAL_GPIOF_AFRH (PIN_AFIO_AF(GPIOF_PIN8, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOF_PIN9, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOF_PIN10, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOF_PIN11, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOF_PIN12, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOF_PIN13, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOF_PIN14, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOF_PIN15, 0U))
|
|
||||||
|
|
||||||
/*===========================================================================*/
|
|
||||||
/* External declarations. */
|
|
||||||
/*===========================================================================*/
|
|
||||||
|
|
||||||
#if !defined(_FROM_ASM_)
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
void boardInit(void);
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
#endif /* _FROM_ASM_ */
|
|
||||||
|
|
||||||
#endif /* BOARD_H */
|
|
|
@ -1,5 +0,0 @@
|
||||||
# List of all the board related files.
|
|
||||||
BOARDSRC = $(BOARD_PATH)/boards/ST_STM32F072B_DISCOVERY/board.c
|
|
||||||
|
|
||||||
# Required include directories
|
|
||||||
BOARDINC = $(BOARD_PATH)/boards/ST_STM32F072B_DISCOVERY
|
|
|
@ -1,703 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<!-- STM32F0xx board Template -->
|
|
||||||
<board
|
|
||||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
||||||
xsi:noNamespaceSchemaLocation="http://www.chibios.org/xml/schema/boards/stm32f0xx_board.xsd">
|
|
||||||
<configuration_settings>
|
|
||||||
<templates_path>resources/gencfg/processors/boards/stm32f0xx/templates</templates_path>
|
|
||||||
<output_path>..</output_path>
|
|
||||||
<hal_version>3.0.x</hal_version>
|
|
||||||
</configuration_settings>
|
|
||||||
<board_name>ST STM32F072B-Discovery</board_name>
|
|
||||||
<board_id>ST_STM32F072B_DISCOVERY</board_id>
|
|
||||||
<board_functions></board_functions>
|
|
||||||
<subtype>STM32F072xB</subtype>
|
|
||||||
<clocks HSEFrequency="0" HSEBypass="true" LSEFrequency="0"
|
|
||||||
LSEBypass="false" LSEDrive="3 High Drive (default)" />
|
|
||||||
<ports>
|
|
||||||
<GPIOA>
|
|
||||||
<pin0
|
|
||||||
ID="BUTTON"
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="Floating"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin1
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin2
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin3
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin4
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin5
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin6
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin7
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin8
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin9
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin10
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin11
|
|
||||||
ID="USB_DM"
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="Floating"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin12
|
|
||||||
ID="USB_DP"
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="Floating"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin13
|
|
||||||
ID="SWDIO"
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Maximum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Alternate"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin14
|
|
||||||
ID="SWCLK"
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Maximum"
|
|
||||||
Resistor="PullDown"
|
|
||||||
Level="High"
|
|
||||||
Mode="Alternate"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin15
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Maximum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
</GPIOA>
|
|
||||||
<GPIOB>
|
|
||||||
<pin0
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin1
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin2
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Maximum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin3
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Maximum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin4
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Maximum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin5
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin6
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin7
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin8
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin9
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin10
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin11
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin12
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin13
|
|
||||||
ID="SPI2_SCK"
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="Floating"
|
|
||||||
Level="High"
|
|
||||||
Mode="Alternate"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin14
|
|
||||||
ID="SPI2_MISO"
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="Floating"
|
|
||||||
Level="High"
|
|
||||||
Mode="Alternate"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin15
|
|
||||||
ID="SPI2_MOSI"
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="Floating"
|
|
||||||
Level="High"
|
|
||||||
Mode="Alternate"
|
|
||||||
Alternate="0" />
|
|
||||||
</GPIOB>
|
|
||||||
<GPIOC>
|
|
||||||
<pin0
|
|
||||||
ID="MEMS_CS"
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Maximum"
|
|
||||||
Resistor="Floating"
|
|
||||||
Level="High"
|
|
||||||
Mode="Output"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin1
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin2
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin3
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin4
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin5
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin6
|
|
||||||
ID="LED_RED"
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Maximum"
|
|
||||||
Resistor="Floating"
|
|
||||||
Level="Low"
|
|
||||||
Mode="Output"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin7
|
|
||||||
ID="LED_BLUE"
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Maximum"
|
|
||||||
Resistor="Floating"
|
|
||||||
Level="Low"
|
|
||||||
Mode="Output"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin8
|
|
||||||
ID="LED_ORANGE"
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Maximum"
|
|
||||||
Resistor="Floating"
|
|
||||||
Level="Low"
|
|
||||||
Mode="Output"
|
|
||||||
Alternate="0" ></pin8>
|
|
||||||
<pin9
|
|
||||||
ID="LED_GREEN"
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Maximum"
|
|
||||||
Resistor="Floating"
|
|
||||||
Level="Low"
|
|
||||||
Mode="Output"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin10
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin11
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin12
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin13
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin14
|
|
||||||
ID="OSC32_IN"
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Maximum"
|
|
||||||
Resistor="Floating"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin15
|
|
||||||
ID="OSC32_OUT"
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Maximum"
|
|
||||||
Resistor="Floating"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
</GPIOC>
|
|
||||||
<GPIOD>
|
|
||||||
<pin0
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin1
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin2
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin3
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin4
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin5
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin6
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin7
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin8
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin9
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin10
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin11
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin12
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin13
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin14
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin15
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
</GPIOD>
|
|
||||||
<GPIOE>
|
|
||||||
<pin0 ID="" Type="PushPull" Speed="Minimum" Resistor="PullUp"
|
|
||||||
Level="High" Mode="Input" Alternate="0" />
|
|
||||||
<pin1 ID="" Type="PushPull" Speed="Minimum" Resistor="PullUp"
|
|
||||||
Level="High" Mode="Input" Alternate="0" />
|
|
||||||
<pin2 ID="" Type="PushPull" Speed="Minimum" Resistor="PullUp"
|
|
||||||
Level="High" Mode="Input" Alternate="0" />
|
|
||||||
<pin3 ID="" Type="PushPull" Speed="Minimum" Resistor="PullUp"
|
|
||||||
Level="High" Mode="Input" Alternate="0" />
|
|
||||||
<pin4 ID="" Type="PushPull" Speed="Minimum" Resistor="PullUp"
|
|
||||||
Level="High" Mode="Input" Alternate="0" />
|
|
||||||
<pin5 ID="" Type="PushPull" Speed="Minimum" Resistor="PullUp"
|
|
||||||
Level="High" Mode="Input" Alternate="0" />
|
|
||||||
<pin6 ID="" Type="PushPull" Speed="Minimum" Resistor="PullUp"
|
|
||||||
Level="High" Mode="Input" Alternate="0" />
|
|
||||||
<pin7 ID="" Type="PushPull" Speed="Minimum" Resistor="PullUp"
|
|
||||||
Level="High" Mode="Input" Alternate="0" />
|
|
||||||
<pin8 ID="" Type="PushPull" Speed="Minimum" Resistor="PullUp"
|
|
||||||
Level="High" Mode="Input" Alternate="0" />
|
|
||||||
<pin9 ID="" Type="PushPull" Speed="Minimum" Resistor="PullUp"
|
|
||||||
Level="High" Mode="Input" Alternate="0" />
|
|
||||||
<pin10 ID="" Type="PushPull" Speed="Minimum" Resistor="PullUp"
|
|
||||||
Level="High" Mode="Input" Alternate="0" />
|
|
||||||
<pin11 ID="" Type="PushPull" Speed="Minimum" Resistor="PullUp"
|
|
||||||
Level="High" Mode="Input" Alternate="0" />
|
|
||||||
<pin12 ID="" Type="PushPull" Speed="Minimum" Resistor="PullUp"
|
|
||||||
Level="High" Mode="Input" Alternate="0" />
|
|
||||||
<pin13 ID="" Type="PushPull" Speed="Minimum" Resistor="PullUp"
|
|
||||||
Level="High" Mode="Input" Alternate="0" />
|
|
||||||
<pin14 ID="" Type="PushPull" Speed="Minimum" Resistor="PullUp"
|
|
||||||
Level="High" Mode="Input" Alternate="0" />
|
|
||||||
<pin15 ID="" Type="PushPull" Speed="Minimum" Resistor="PullUp"
|
|
||||||
Level="High" Mode="Input" Alternate="0" />
|
|
||||||
</GPIOE>
|
|
||||||
<GPIOF>
|
|
||||||
<pin0
|
|
||||||
ID="OSC_IN"
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="Floating"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin1
|
|
||||||
ID="OSC_OUT"
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="Floating"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin2
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin3
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin4
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin5
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin6
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin7
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin8
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin9
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin10
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin11
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin12
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin13
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin14
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin15
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
</GPIOF>
|
|
||||||
</ports>
|
|
||||||
</board>
|
|
|
@ -17,6 +17,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
/* Ensure we jump to bootloader if the RESET keycode was pressed */
|
||||||
|
#define EARLY_INIT_PERFORM_BOOTLOADER_JUMP TRUE
|
||||||
|
|
||||||
|
/* LSE clock */
|
||||||
|
#define STM32_LSECLK 32768
|
||||||
|
|
||||||
/* USB Device descriptor parameter */
|
/* USB Device descriptor parameter */
|
||||||
#define VENDOR_ID 0xA22A
|
#define VENDOR_ID 0xA22A
|
||||||
#define PRODUCT_ID 0x6600
|
#define PRODUCT_ID 0x6600
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
# MCU name
|
# MCU name
|
||||||
MCU = STM32F072
|
MCU = STM32F072
|
||||||
BOARD = ST_STM32F072B_DISCOVERY
|
BOARD = GENERIC_STM32_F072XB
|
||||||
|
|
||||||
# Build Options
|
# Build Options
|
||||||
# comment out to disable the options.
|
# comment out to disable the options.
|
||||||
|
|
|
@ -19,7 +19,8 @@ NKRO_ENABLE = no # USB Nkey Rollover
|
||||||
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
|
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
|
||||||
BLUETOOTH_ENABLE = no # Enable Bluetooth
|
BLUETOOTH_ENABLE = no # Enable Bluetooth
|
||||||
AUDIO_ENABLE = no # Audio output
|
AUDIO_ENABLE = no # Audio output
|
||||||
RGB_MATRIX_ENABLE = WS2812
|
RGB_MATRIX_ENABLE = yes
|
||||||
|
RGB_MATRIX_DRIVER = WS2812
|
||||||
|
|
||||||
LAYOUTS = planck_mit
|
LAYOUTS = planck_mit
|
||||||
LAYOUTS_HAS_RGB = yes
|
LAYOUTS_HAS_RGB = yes
|
||||||
|
|
|
@ -20,5 +20,6 @@ BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
|
||||||
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
|
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
|
||||||
BLUETOOTH_ENABLE = no # Enable Bluetooth
|
BLUETOOTH_ENABLE = no # Enable Bluetooth
|
||||||
AUDIO_ENABLE = no # Audio output
|
AUDIO_ENABLE = no # Audio output
|
||||||
RGB_MATRIX_ENABLE = WS2812
|
RGB_MATRIX_ENABLE = yes
|
||||||
|
RGB_MATRIX_DRIVER = WS2812
|
||||||
LAYOUTS = 60_ansi
|
LAYOUTS = 60_ansi
|
||||||
|
|
|
@ -30,7 +30,8 @@ UNICODE_ENABLE = no # Unicode
|
||||||
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||||
AUDIO_ENABLE = no # Audio output on port C6
|
AUDIO_ENABLE = no # Audio output on port C6
|
||||||
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
|
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
|
||||||
RGB_MATRIX_ENABLE = WS2812
|
RGB_MATRIX_ENABLE = yes
|
||||||
|
RGB_MATRIX_DRIVER = WS2812
|
||||||
LTO_ENABLE = yes
|
LTO_ENABLE = yes
|
||||||
|
|
||||||
# partially generated by KBFirmware JSON to QMK Parser
|
# partially generated by KBFirmware JSON to QMK Parser
|
||||||
|
|
|
@ -20,5 +20,6 @@ BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
|
||||||
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
|
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
|
||||||
BLUETOOTH_ENABLE = no # Enable Bluetooth
|
BLUETOOTH_ENABLE = no # Enable Bluetooth
|
||||||
AUDIO_ENABLE = no # Audio output
|
AUDIO_ENABLE = no # Audio output
|
||||||
RGB_MATRIX_ENABLE = WS2812
|
RGB_MATRIX_ENABLE = yes
|
||||||
|
RGB_MATRIX_DRIVER = WS2812
|
||||||
LTO_ENABLE = yes
|
LTO_ENABLE = yes
|
||||||
|
|
|
@ -16,7 +16,8 @@ NKRO_ENABLE = yes # USB Nkey Rollover
|
||||||
CUSTOM_MATRIX = no # Custom matrix file
|
CUSTOM_MATRIX = no # Custom matrix file
|
||||||
AUDIO_ENABLE = yes
|
AUDIO_ENABLE = yes
|
||||||
RGBLIGHT_ENABLE = no
|
RGBLIGHT_ENABLE = no
|
||||||
RGB_MATRIX_ENABLE = no #WS2812
|
RGB_MATRIX_ENABLE = no
|
||||||
|
RGB_MATRIX_DRIVER = WS2812
|
||||||
HAPTIC_ENABLE += DRV2605L
|
HAPTIC_ENABLE += DRV2605L
|
||||||
QWIIC_ENABLE += MICRO_OLED
|
QWIIC_ENABLE += MICRO_OLED
|
||||||
# SERIAL_LINK_ENABLE = yes
|
# SERIAL_LINK_ENABLE = yes
|
||||||
|
|
|
@ -1,268 +0,0 @@
|
||||||
/*
|
|
||||||
ChibiOS - Copyright (C) 2006..2018 Giovanni Di Sirio
|
|
||||||
|
|
||||||
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.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
* This file has been automatically generated using ChibiStudio board
|
|
||||||
* generator plugin. Do not edit manually.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "hal.h"
|
|
||||||
#include "stm32_gpio.h"
|
|
||||||
|
|
||||||
/*===========================================================================*/
|
|
||||||
/* Driver local definitions. */
|
|
||||||
/*===========================================================================*/
|
|
||||||
|
|
||||||
/*===========================================================================*/
|
|
||||||
/* Driver exported variables. */
|
|
||||||
/*===========================================================================*/
|
|
||||||
|
|
||||||
/*===========================================================================*/
|
|
||||||
/* Driver local variables and types. */
|
|
||||||
/*===========================================================================*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Type of STM32 GPIO port setup.
|
|
||||||
*/
|
|
||||||
typedef struct {
|
|
||||||
uint32_t moder;
|
|
||||||
uint32_t otyper;
|
|
||||||
uint32_t ospeedr;
|
|
||||||
uint32_t pupdr;
|
|
||||||
uint32_t odr;
|
|
||||||
uint32_t afrl;
|
|
||||||
uint32_t afrh;
|
|
||||||
} gpio_setup_t;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Type of STM32 GPIO initialization data.
|
|
||||||
*/
|
|
||||||
typedef struct {
|
|
||||||
#if STM32_HAS_GPIOA || defined(__DOXYGEN__)
|
|
||||||
gpio_setup_t PAData;
|
|
||||||
#endif
|
|
||||||
#if STM32_HAS_GPIOB || defined(__DOXYGEN__)
|
|
||||||
gpio_setup_t PBData;
|
|
||||||
#endif
|
|
||||||
#if STM32_HAS_GPIOC || defined(__DOXYGEN__)
|
|
||||||
gpio_setup_t PCData;
|
|
||||||
#endif
|
|
||||||
#if STM32_HAS_GPIOD || defined(__DOXYGEN__)
|
|
||||||
gpio_setup_t PDData;
|
|
||||||
#endif
|
|
||||||
#if STM32_HAS_GPIOE || defined(__DOXYGEN__)
|
|
||||||
gpio_setup_t PEData;
|
|
||||||
#endif
|
|
||||||
#if STM32_HAS_GPIOF || defined(__DOXYGEN__)
|
|
||||||
gpio_setup_t PFData;
|
|
||||||
#endif
|
|
||||||
#if STM32_HAS_GPIOG || defined(__DOXYGEN__)
|
|
||||||
gpio_setup_t PGData;
|
|
||||||
#endif
|
|
||||||
#if STM32_HAS_GPIOH || defined(__DOXYGEN__)
|
|
||||||
gpio_setup_t PHData;
|
|
||||||
#endif
|
|
||||||
#if STM32_HAS_GPIOI || defined(__DOXYGEN__)
|
|
||||||
gpio_setup_t PIData;
|
|
||||||
#endif
|
|
||||||
#if STM32_HAS_GPIOJ || defined(__DOXYGEN__)
|
|
||||||
gpio_setup_t PJData;
|
|
||||||
#endif
|
|
||||||
#if STM32_HAS_GPIOK || defined(__DOXYGEN__)
|
|
||||||
gpio_setup_t PKData;
|
|
||||||
#endif
|
|
||||||
} gpio_config_t;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief STM32 GPIO static initialization data.
|
|
||||||
*/
|
|
||||||
static const gpio_config_t gpio_default_config = {
|
|
||||||
#if STM32_HAS_GPIOA
|
|
||||||
{VAL_GPIOA_MODER, VAL_GPIOA_OTYPER, VAL_GPIOA_OSPEEDR, VAL_GPIOA_PUPDR,
|
|
||||||
VAL_GPIOA_ODR, VAL_GPIOA_AFRL, VAL_GPIOA_AFRH},
|
|
||||||
#endif
|
|
||||||
#if STM32_HAS_GPIOB
|
|
||||||
{VAL_GPIOB_MODER, VAL_GPIOB_OTYPER, VAL_GPIOB_OSPEEDR, VAL_GPIOB_PUPDR,
|
|
||||||
VAL_GPIOB_ODR, VAL_GPIOB_AFRL, VAL_GPIOB_AFRH},
|
|
||||||
#endif
|
|
||||||
#if STM32_HAS_GPIOC
|
|
||||||
{VAL_GPIOC_MODER, VAL_GPIOC_OTYPER, VAL_GPIOC_OSPEEDR, VAL_GPIOC_PUPDR,
|
|
||||||
VAL_GPIOC_ODR, VAL_GPIOC_AFRL, VAL_GPIOC_AFRH},
|
|
||||||
#endif
|
|
||||||
#if STM32_HAS_GPIOD
|
|
||||||
{VAL_GPIOD_MODER, VAL_GPIOD_OTYPER, VAL_GPIOD_OSPEEDR, VAL_GPIOD_PUPDR,
|
|
||||||
VAL_GPIOD_ODR, VAL_GPIOD_AFRL, VAL_GPIOD_AFRH},
|
|
||||||
#endif
|
|
||||||
#if STM32_HAS_GPIOE
|
|
||||||
{VAL_GPIOE_MODER, VAL_GPIOE_OTYPER, VAL_GPIOE_OSPEEDR, VAL_GPIOE_PUPDR,
|
|
||||||
VAL_GPIOE_ODR, VAL_GPIOE_AFRL, VAL_GPIOE_AFRH},
|
|
||||||
#endif
|
|
||||||
#if STM32_HAS_GPIOF
|
|
||||||
{VAL_GPIOF_MODER, VAL_GPIOF_OTYPER, VAL_GPIOF_OSPEEDR, VAL_GPIOF_PUPDR,
|
|
||||||
VAL_GPIOF_ODR, VAL_GPIOF_AFRL, VAL_GPIOF_AFRH},
|
|
||||||
#endif
|
|
||||||
#if STM32_HAS_GPIOG
|
|
||||||
{VAL_GPIOG_MODER, VAL_GPIOG_OTYPER, VAL_GPIOG_OSPEEDR, VAL_GPIOG_PUPDR,
|
|
||||||
VAL_GPIOG_ODR, VAL_GPIOG_AFRL, VAL_GPIOG_AFRH},
|
|
||||||
#endif
|
|
||||||
#if STM32_HAS_GPIOH
|
|
||||||
{VAL_GPIOH_MODER, VAL_GPIOH_OTYPER, VAL_GPIOH_OSPEEDR, VAL_GPIOH_PUPDR,
|
|
||||||
VAL_GPIOH_ODR, VAL_GPIOH_AFRL, VAL_GPIOH_AFRH},
|
|
||||||
#endif
|
|
||||||
#if STM32_HAS_GPIOI
|
|
||||||
{VAL_GPIOI_MODER, VAL_GPIOI_OTYPER, VAL_GPIOI_OSPEEDR, VAL_GPIOI_PUPDR,
|
|
||||||
VAL_GPIOI_ODR, VAL_GPIOI_AFRL, VAL_GPIOI_AFRH},
|
|
||||||
#endif
|
|
||||||
#if STM32_HAS_GPIOJ
|
|
||||||
{VAL_GPIOJ_MODER, VAL_GPIOJ_OTYPER, VAL_GPIOJ_OSPEEDR, VAL_GPIOJ_PUPDR,
|
|
||||||
VAL_GPIOJ_ODR, VAL_GPIOJ_AFRL, VAL_GPIOJ_AFRH},
|
|
||||||
#endif
|
|
||||||
#if STM32_HAS_GPIOK
|
|
||||||
{VAL_GPIOK_MODER, VAL_GPIOK_OTYPER, VAL_GPIOK_OSPEEDR, VAL_GPIOK_PUPDR,
|
|
||||||
VAL_GPIOK_ODR, VAL_GPIOK_AFRL, VAL_GPIOK_AFRH}
|
|
||||||
#endif
|
|
||||||
};
|
|
||||||
|
|
||||||
/*===========================================================================*/
|
|
||||||
/* Driver local functions. */
|
|
||||||
/*===========================================================================*/
|
|
||||||
|
|
||||||
static void gpio_init(stm32_gpio_t *gpiop, const gpio_setup_t *config) {
|
|
||||||
|
|
||||||
gpiop->OTYPER = config->otyper;
|
|
||||||
gpiop->OSPEEDR = config->ospeedr;
|
|
||||||
gpiop->PUPDR = config->pupdr;
|
|
||||||
gpiop->ODR = config->odr;
|
|
||||||
gpiop->AFRL = config->afrl;
|
|
||||||
gpiop->AFRH = config->afrh;
|
|
||||||
gpiop->MODER = config->moder;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void stm32_gpio_init(void) {
|
|
||||||
|
|
||||||
/* Enabling GPIO-related clocks, the mask comes from the
|
|
||||||
registry header file.*/
|
|
||||||
rccResetAHB(STM32_GPIO_EN_MASK);
|
|
||||||
rccEnableAHB(STM32_GPIO_EN_MASK, true);
|
|
||||||
|
|
||||||
/* Initializing all the defined GPIO ports.*/
|
|
||||||
#if STM32_HAS_GPIOA
|
|
||||||
gpio_init(GPIOA, &gpio_default_config.PAData);
|
|
||||||
#endif
|
|
||||||
#if STM32_HAS_GPIOB
|
|
||||||
gpio_init(GPIOB, &gpio_default_config.PBData);
|
|
||||||
#endif
|
|
||||||
#if STM32_HAS_GPIOC
|
|
||||||
gpio_init(GPIOC, &gpio_default_config.PCData);
|
|
||||||
#endif
|
|
||||||
#if STM32_HAS_GPIOD
|
|
||||||
gpio_init(GPIOD, &gpio_default_config.PDData);
|
|
||||||
#endif
|
|
||||||
#if STM32_HAS_GPIOE
|
|
||||||
gpio_init(GPIOE, &gpio_default_config.PEData);
|
|
||||||
#endif
|
|
||||||
#if STM32_HAS_GPIOF
|
|
||||||
gpio_init(GPIOF, &gpio_default_config.PFData);
|
|
||||||
#endif
|
|
||||||
#if STM32_HAS_GPIOG
|
|
||||||
gpio_init(GPIOG, &gpio_default_config.PGData);
|
|
||||||
#endif
|
|
||||||
#if STM32_HAS_GPIOH
|
|
||||||
gpio_init(GPIOH, &gpio_default_config.PHData);
|
|
||||||
#endif
|
|
||||||
#if STM32_HAS_GPIOI
|
|
||||||
gpio_init(GPIOI, &gpio_default_config.PIData);
|
|
||||||
#endif
|
|
||||||
#if STM32_HAS_GPIOJ
|
|
||||||
gpio_init(GPIOJ, &gpio_default_config.PJData);
|
|
||||||
#endif
|
|
||||||
#if STM32_HAS_GPIOK
|
|
||||||
gpio_init(GPIOK, &gpio_default_config.PKData);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
/*===========================================================================*/
|
|
||||||
/* Driver interrupt handlers. */
|
|
||||||
/*===========================================================================*/
|
|
||||||
|
|
||||||
/*===========================================================================*/
|
|
||||||
/* Driver exported functions. */
|
|
||||||
/*===========================================================================*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Early initialization code.
|
|
||||||
* @details GPIO ports and system clocks are initialized before everything
|
|
||||||
* else.
|
|
||||||
*/
|
|
||||||
void __early_init(void) {
|
|
||||||
extern void enter_bootloader_mode_if_requested(void);
|
|
||||||
enter_bootloader_mode_if_requested();
|
|
||||||
stm32_gpio_init();
|
|
||||||
stm32_clock_init();
|
|
||||||
}
|
|
||||||
|
|
||||||
#if HAL_USE_SDC || defined(__DOXYGEN__)
|
|
||||||
/**
|
|
||||||
* @brief SDC card detection.
|
|
||||||
*/
|
|
||||||
bool sdc_lld_is_card_inserted(SDCDriver *sdcp) {
|
|
||||||
|
|
||||||
(void)sdcp;
|
|
||||||
/* TODO: Fill the implementation.*/
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief SDC card write protection detection.
|
|
||||||
*/
|
|
||||||
bool sdc_lld_is_write_protected(SDCDriver *sdcp) {
|
|
||||||
|
|
||||||
(void)sdcp;
|
|
||||||
/* TODO: Fill the implementation.*/
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
#endif /* HAL_USE_SDC */
|
|
||||||
|
|
||||||
#if HAL_USE_MMC_SPI || defined(__DOXYGEN__)
|
|
||||||
/**
|
|
||||||
* @brief MMC_SPI card detection.
|
|
||||||
*/
|
|
||||||
bool mmc_lld_is_card_inserted(MMCDriver *mmcp) {
|
|
||||||
|
|
||||||
(void)mmcp;
|
|
||||||
/* TODO: Fill the implementation.*/
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief MMC_SPI card write protection detection.
|
|
||||||
*/
|
|
||||||
bool mmc_lld_is_write_protected(MMCDriver *mmcp) {
|
|
||||||
|
|
||||||
(void)mmcp;
|
|
||||||
/* TODO: Fill the implementation.*/
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Board-specific initialization code.
|
|
||||||
* @todo Add your board-specific code, if any.
|
|
||||||
*/
|
|
||||||
void boardInit(void) {
|
|
||||||
SYSCFG->CFGR1 |= SYSCFG_CFGR1_I2C1_DMA_RMP;
|
|
||||||
SYSCFG->CFGR1 &= ~(SYSCFG_CFGR1_SPI2_DMA_RMP);
|
|
||||||
}
|
|
|
@ -1,940 +0,0 @@
|
||||||
/*
|
|
||||||
ChibiOS - Copyright (C) 2006..2016 Giovanni Di Sirio
|
|
||||||
|
|
||||||
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.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
* This file has been automatically generated using ChibiStudio board
|
|
||||||
* generator plugin. Do not edit manually.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef BOARD_H
|
|
||||||
#define BOARD_H
|
|
||||||
|
|
||||||
/*===========================================================================*/
|
|
||||||
/* Driver constants. */
|
|
||||||
/*===========================================================================*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Setup for ST STM32F072B-Discovery board.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Board identifier.
|
|
||||||
*/
|
|
||||||
#define BOARD_ST_STM32F072B_DISCOVERY
|
|
||||||
#define BOARD_NAME "ST STM32F072B-Discovery"
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Board oscillators-related settings.
|
|
||||||
* NOTE: HSE not fitted.
|
|
||||||
*/
|
|
||||||
#if !defined(STM32_LSECLK)
|
|
||||||
#define STM32_LSECLK 32768
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define STM32_LSEDRV (3U << 3U)
|
|
||||||
|
|
||||||
#if !defined(STM32_HSECLK)
|
|
||||||
#define STM32_HSECLK 0U
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define STM32_HSE_BYPASS
|
|
||||||
|
|
||||||
/*
|
|
||||||
* MCU type as defined in the ST header.
|
|
||||||
*/
|
|
||||||
#define STM32F072xB
|
|
||||||
|
|
||||||
/*
|
|
||||||
* IO pins assignments.
|
|
||||||
*/
|
|
||||||
#define GPIOA_BUTTON 0U
|
|
||||||
#define GPIOA_PIN1 1U
|
|
||||||
#define GPIOA_PIN2 2U
|
|
||||||
#define GPIOA_PIN3 3U
|
|
||||||
#define GPIOA_PIN4 4U
|
|
||||||
#define GPIOA_PIN5 5U
|
|
||||||
#define GPIOA_PIN6 6U
|
|
||||||
#define GPIOA_PIN7 7U
|
|
||||||
#define GPIOA_PIN8 8U
|
|
||||||
#define GPIOA_PIN9 9U
|
|
||||||
#define GPIOA_PIN10 10U
|
|
||||||
#define GPIOA_USB_DM 11U
|
|
||||||
#define GPIOA_USB_DP 12U
|
|
||||||
#define GPIOA_SWDIO 13U
|
|
||||||
#define GPIOA_SWCLK 14U
|
|
||||||
#define GPIOA_PIN15 15U
|
|
||||||
|
|
||||||
#define GPIOB_PIN0 0U
|
|
||||||
#define GPIOB_PIN1 1U
|
|
||||||
#define GPIOB_PIN2 2U
|
|
||||||
#define GPIOB_PIN3 3U
|
|
||||||
#define GPIOB_PIN4 4U
|
|
||||||
#define GPIOB_PIN5 5U
|
|
||||||
#define GPIOB_PIN6 6U
|
|
||||||
#define GPIOB_PIN7 7U
|
|
||||||
#define GPIOB_PIN8 8U
|
|
||||||
#define GPIOB_PIN9 9U
|
|
||||||
#define GPIOB_PIN10 10U
|
|
||||||
#define GPIOB_PIN11 11U
|
|
||||||
#define GPIOB_PIN12 12U
|
|
||||||
#define GPIOB_SPI2_SCK 13U
|
|
||||||
#define GPIOB_SPI2_MISO 14U
|
|
||||||
#define GPIOB_SPI2_MOSI 15U
|
|
||||||
|
|
||||||
#define GPIOC_MEMS_CS 0U
|
|
||||||
#define GPIOC_PIN1 1U
|
|
||||||
#define GPIOC_PIN2 2U
|
|
||||||
#define GPIOC_PIN3 3U
|
|
||||||
#define GPIOC_PIN4 4U
|
|
||||||
#define GPIOC_PIN5 5U
|
|
||||||
#define GPIOC_LED_RED 6U
|
|
||||||
#define GPIOC_LED_BLUE 7U
|
|
||||||
#define GPIOC_LED_ORANGE 8U
|
|
||||||
#define GPIOC_LED_GREEN 9U
|
|
||||||
#define GPIOC_PIN10 10U
|
|
||||||
#define GPIOC_PIN11 11U
|
|
||||||
#define GPIOC_PIN12 12U
|
|
||||||
#define GPIOC_PIN13 13U
|
|
||||||
#define GPIOC_OSC32_IN 14U
|
|
||||||
#define GPIOC_OSC32_OUT 15U
|
|
||||||
|
|
||||||
#define GPIOD_PIN0 0U
|
|
||||||
#define GPIOD_PIN1 1U
|
|
||||||
#define GPIOD_PIN2 2U
|
|
||||||
#define GPIOD_PIN3 3U
|
|
||||||
#define GPIOD_PIN4 4U
|
|
||||||
#define GPIOD_PIN5 5U
|
|
||||||
#define GPIOD_PIN6 6U
|
|
||||||
#define GPIOD_PIN7 7U
|
|
||||||
#define GPIOD_PIN8 8U
|
|
||||||
#define GPIOD_PIN9 9U
|
|
||||||
#define GPIOD_PIN10 10U
|
|
||||||
#define GPIOD_PIN11 11U
|
|
||||||
#define GPIOD_PIN12 12U
|
|
||||||
#define GPIOD_PIN13 13U
|
|
||||||
#define GPIOD_PIN14 14U
|
|
||||||
#define GPIOD_PIN15 15U
|
|
||||||
|
|
||||||
#define GPIOE_PIN0 0U
|
|
||||||
#define GPIOE_PIN1 1U
|
|
||||||
#define GPIOE_PIN2 2U
|
|
||||||
#define GPIOE_PIN3 3U
|
|
||||||
#define GPIOE_PIN4 4U
|
|
||||||
#define GPIOE_PIN5 5U
|
|
||||||
#define GPIOE_PIN6 6U
|
|
||||||
#define GPIOE_PIN7 7U
|
|
||||||
#define GPIOE_PIN8 8U
|
|
||||||
#define GPIOE_PIN9 9U
|
|
||||||
#define GPIOE_PIN10 10U
|
|
||||||
#define GPIOE_PIN11 11U
|
|
||||||
#define GPIOE_PIN12 12U
|
|
||||||
#define GPIOE_PIN13 13U
|
|
||||||
#define GPIOE_PIN14 14U
|
|
||||||
#define GPIOE_PIN15 15U
|
|
||||||
|
|
||||||
#define GPIOF_OSC_IN 0U
|
|
||||||
#define GPIOF_OSC_OUT 1U
|
|
||||||
#define GPIOF_PIN2 2U
|
|
||||||
#define GPIOF_PIN3 3U
|
|
||||||
#define GPIOF_PIN4 4U
|
|
||||||
#define GPIOF_PIN5 5U
|
|
||||||
#define GPIOF_PIN6 6U
|
|
||||||
#define GPIOF_PIN7 7U
|
|
||||||
#define GPIOF_PIN8 8U
|
|
||||||
#define GPIOF_PIN9 9U
|
|
||||||
#define GPIOF_PIN10 10U
|
|
||||||
#define GPIOF_PIN11 11U
|
|
||||||
#define GPIOF_PIN12 12U
|
|
||||||
#define GPIOF_PIN13 13U
|
|
||||||
#define GPIOF_PIN14 14U
|
|
||||||
#define GPIOF_PIN15 15U
|
|
||||||
|
|
||||||
/*
|
|
||||||
* IO lines assignments.
|
|
||||||
*/
|
|
||||||
#define LINE_BUTTON PAL_LINE(GPIOA, 0U)
|
|
||||||
#define LINE_USB_DM PAL_LINE(GPIOA, 11U)
|
|
||||||
#define LINE_USB_DP PAL_LINE(GPIOA, 12U)
|
|
||||||
#define LINE_SWDIO PAL_LINE(GPIOA, 13U)
|
|
||||||
#define LINE_SWCLK PAL_LINE(GPIOA, 14U)
|
|
||||||
#define LINE_SPI2_SCK PAL_LINE(GPIOB, 13U)
|
|
||||||
#define LINE_SPI2_MISO PAL_LINE(GPIOB, 14U)
|
|
||||||
#define LINE_SPI2_MOSI PAL_LINE(GPIOB, 15U)
|
|
||||||
#define LINE_MEMS_CS PAL_LINE(GPIOC, 0U)
|
|
||||||
#define LINE_LED_RED PAL_LINE(GPIOC, 6U)
|
|
||||||
#define LINE_LED_BLUE PAL_LINE(GPIOC, 7U)
|
|
||||||
#define LINE_LED_ORANGE PAL_LINE(GPIOC, 8U)
|
|
||||||
#define LINE_LED_GREEN PAL_LINE(GPIOC, 9U)
|
|
||||||
#define LINE_OSC32_IN PAL_LINE(GPIOC, 14U)
|
|
||||||
#define LINE_OSC32_OUT PAL_LINE(GPIOC, 15U)
|
|
||||||
#define LINE_OSC_IN PAL_LINE(GPIOF, 0U)
|
|
||||||
#define LINE_OSC_OUT PAL_LINE(GPIOF, 1U)
|
|
||||||
|
|
||||||
/*===========================================================================*/
|
|
||||||
/* Driver pre-compile time settings. */
|
|
||||||
/*===========================================================================*/
|
|
||||||
|
|
||||||
/*===========================================================================*/
|
|
||||||
/* Derived constants and error checks. */
|
|
||||||
/*===========================================================================*/
|
|
||||||
|
|
||||||
/*===========================================================================*/
|
|
||||||
/* Driver data structures and types. */
|
|
||||||
/*===========================================================================*/
|
|
||||||
|
|
||||||
/*===========================================================================*/
|
|
||||||
/* Driver macros. */
|
|
||||||
/*===========================================================================*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
* I/O ports initial setup, this configuration is established soon after reset
|
|
||||||
* in the initialization code.
|
|
||||||
* Please refer to the STM32 Reference Manual for details.
|
|
||||||
*/
|
|
||||||
#define PIN_MODE_INPUT(n) (0U << ((n) * 2U))
|
|
||||||
#define PIN_MODE_OUTPUT(n) (1U << ((n) * 2U))
|
|
||||||
#define PIN_MODE_ALTERNATE(n) (2U << ((n) * 2U))
|
|
||||||
#define PIN_MODE_ANALOG(n) (3U << ((n) * 2U))
|
|
||||||
#define PIN_ODR_LOW(n) (0U << (n))
|
|
||||||
#define PIN_ODR_HIGH(n) (1U << (n))
|
|
||||||
#define PIN_OTYPE_PUSHPULL(n) (0U << (n))
|
|
||||||
#define PIN_OTYPE_OPENDRAIN(n) (1U << (n))
|
|
||||||
#define PIN_OSPEED_VERYLOW(n) (0U << ((n) * 2U))
|
|
||||||
#define PIN_OSPEED_LOW(n) (1U << ((n) * 2U))
|
|
||||||
#define PIN_OSPEED_MEDIUM(n) (2U << ((n) * 2U))
|
|
||||||
#define PIN_OSPEED_HIGH(n) (3U << ((n) * 2U))
|
|
||||||
#define PIN_PUPDR_FLOATING(n) (0U << ((n) * 2U))
|
|
||||||
#define PIN_PUPDR_PULLUP(n) (1U << ((n) * 2U))
|
|
||||||
#define PIN_PUPDR_PULLDOWN(n) (2U << ((n) * 2U))
|
|
||||||
#define PIN_AFIO_AF(n, v) ((v) << (((n) % 8U) * 4U))
|
|
||||||
|
|
||||||
/*
|
|
||||||
* GPIOA setup:
|
|
||||||
*
|
|
||||||
* PA0 - BUTTON (input floating).
|
|
||||||
* PA1 - PIN1 (input pullup).
|
|
||||||
* PA2 - PIN2 (input pullup).
|
|
||||||
* PA3 - PIN3 (input pullup).
|
|
||||||
* PA4 - PIN4 (input pullup).
|
|
||||||
* PA5 - PIN5 (input pullup).
|
|
||||||
* PA6 - PIN6 (input pullup).
|
|
||||||
* PA7 - PIN7 (input pullup).
|
|
||||||
* PA8 - PIN8 (input pullup).
|
|
||||||
* PA9 - PIN9 (input pullup).
|
|
||||||
* PA10 - PIN10 (input pullup).
|
|
||||||
* PA11 - USB_DM (input floating).
|
|
||||||
* PA12 - USB_DP (input floating).
|
|
||||||
* PA13 - SWDIO (alternate 0).
|
|
||||||
* PA14 - SWCLK (alternate 0).
|
|
||||||
* PA15 - PIN15 (input pullup).
|
|
||||||
*/
|
|
||||||
#define VAL_GPIOA_MODER (PIN_MODE_INPUT(GPIOA_BUTTON) | \
|
|
||||||
PIN_MODE_INPUT(GPIOA_PIN1) | \
|
|
||||||
PIN_MODE_INPUT(GPIOA_PIN2) | \
|
|
||||||
PIN_MODE_INPUT(GPIOA_PIN3) | \
|
|
||||||
PIN_MODE_INPUT(GPIOA_PIN4) | \
|
|
||||||
PIN_MODE_INPUT(GPIOA_PIN5) | \
|
|
||||||
PIN_MODE_INPUT(GPIOA_PIN6) | \
|
|
||||||
PIN_MODE_INPUT(GPIOA_PIN7) | \
|
|
||||||
PIN_MODE_INPUT(GPIOA_PIN8) | \
|
|
||||||
PIN_MODE_INPUT(GPIOA_PIN9) | \
|
|
||||||
PIN_MODE_INPUT(GPIOA_PIN10) | \
|
|
||||||
PIN_MODE_INPUT(GPIOA_USB_DM) | \
|
|
||||||
PIN_MODE_INPUT(GPIOA_USB_DP) | \
|
|
||||||
PIN_MODE_ALTERNATE(GPIOA_SWDIO) | \
|
|
||||||
PIN_MODE_ALTERNATE(GPIOA_SWCLK) | \
|
|
||||||
PIN_MODE_INPUT(GPIOA_PIN15))
|
|
||||||
#define VAL_GPIOA_OTYPER (PIN_OTYPE_PUSHPULL(GPIOA_BUTTON) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOA_PIN1) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOA_PIN2) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOA_PIN3) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOA_PIN4) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOA_PIN5) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOA_PIN6) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOA_PIN7) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOA_PIN8) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOA_PIN9) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOA_PIN10) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOA_USB_DM) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOA_USB_DP) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOA_SWDIO) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOA_SWCLK) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOA_PIN15))
|
|
||||||
#define VAL_GPIOA_OSPEEDR (PIN_OSPEED_VERYLOW(GPIOA_BUTTON) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOA_PIN1) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOA_PIN2) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOA_PIN3) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOA_PIN4) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOA_PIN5) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOA_PIN6) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOA_PIN7) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOA_PIN8) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOA_PIN9) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOA_PIN10) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOA_USB_DM) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOA_USB_DP) | \
|
|
||||||
PIN_OSPEED_HIGH(GPIOA_SWDIO) | \
|
|
||||||
PIN_OSPEED_HIGH(GPIOA_SWCLK) | \
|
|
||||||
PIN_OSPEED_HIGH(GPIOA_PIN15))
|
|
||||||
#define VAL_GPIOA_PUPDR (PIN_PUPDR_FLOATING(GPIOA_BUTTON) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOA_PIN1) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOA_PIN2) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOA_PIN3) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOA_PIN4) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOA_PIN5) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOA_PIN6) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOA_PIN7) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOA_PIN8) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOA_PIN9) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOA_PIN10) | \
|
|
||||||
PIN_PUPDR_FLOATING(GPIOA_USB_DM) | \
|
|
||||||
PIN_PUPDR_FLOATING(GPIOA_USB_DP) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOA_SWDIO) | \
|
|
||||||
PIN_PUPDR_PULLDOWN(GPIOA_SWCLK) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOA_PIN15))
|
|
||||||
#define VAL_GPIOA_ODR (PIN_ODR_HIGH(GPIOA_BUTTON) | \
|
|
||||||
PIN_ODR_HIGH(GPIOA_PIN1) | \
|
|
||||||
PIN_ODR_HIGH(GPIOA_PIN2) | \
|
|
||||||
PIN_ODR_HIGH(GPIOA_PIN3) | \
|
|
||||||
PIN_ODR_HIGH(GPIOA_PIN4) | \
|
|
||||||
PIN_ODR_HIGH(GPIOA_PIN5) | \
|
|
||||||
PIN_ODR_HIGH(GPIOA_PIN6) | \
|
|
||||||
PIN_ODR_HIGH(GPIOA_PIN7) | \
|
|
||||||
PIN_ODR_HIGH(GPIOA_PIN8) | \
|
|
||||||
PIN_ODR_HIGH(GPIOA_PIN9) | \
|
|
||||||
PIN_ODR_HIGH(GPIOA_PIN10) | \
|
|
||||||
PIN_ODR_HIGH(GPIOA_USB_DM) | \
|
|
||||||
PIN_ODR_HIGH(GPIOA_USB_DP) | \
|
|
||||||
PIN_ODR_HIGH(GPIOA_SWDIO) | \
|
|
||||||
PIN_ODR_HIGH(GPIOA_SWCLK) | \
|
|
||||||
PIN_ODR_HIGH(GPIOA_PIN15))
|
|
||||||
#define VAL_GPIOA_AFRL (PIN_AFIO_AF(GPIOA_BUTTON, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOA_PIN1, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOA_PIN2, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOA_PIN3, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOA_PIN4, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOA_PIN5, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOA_PIN6, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOA_PIN7, 0U))
|
|
||||||
#define VAL_GPIOA_AFRH (PIN_AFIO_AF(GPIOA_PIN8, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOA_PIN9, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOA_PIN10, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOA_USB_DM, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOA_USB_DP, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOA_SWDIO, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOA_SWCLK, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOA_PIN15, 0U))
|
|
||||||
|
|
||||||
/*
|
|
||||||
* GPIOB setup:
|
|
||||||
*
|
|
||||||
* PB0 - PIN0 (input pullup).
|
|
||||||
* PB1 - PIN1 (input pullup).
|
|
||||||
* PB2 - PIN2 (input pullup).
|
|
||||||
* PB3 - PIN3 (input pullup).
|
|
||||||
* PB4 - PIN4 (input pullup).
|
|
||||||
* PB5 - PIN5 (input pullup).
|
|
||||||
* PB6 - PIN6 (input pullup).
|
|
||||||
* PB7 - PIN7 (input pullup).
|
|
||||||
* PB8 - PIN8 (input pullup).
|
|
||||||
* PB9 - PIN9 (input pullup).
|
|
||||||
* PB10 - PIN10 (input pullup).
|
|
||||||
* PB11 - PIN11 (input pullup).
|
|
||||||
* PB12 - PIN12 (input pullup).
|
|
||||||
* PB13 - SPI2_SCK (alternate 0).
|
|
||||||
* PB14 - SPI2_MISO (alternate 0).
|
|
||||||
* PB15 - SPI2_MOSI (alternate 0).
|
|
||||||
*/
|
|
||||||
#define VAL_GPIOB_MODER (PIN_MODE_INPUT(GPIOB_PIN0) | \
|
|
||||||
PIN_MODE_INPUT(GPIOB_PIN1) | \
|
|
||||||
PIN_MODE_INPUT(GPIOB_PIN2) | \
|
|
||||||
PIN_MODE_INPUT(GPIOB_PIN3) | \
|
|
||||||
PIN_MODE_INPUT(GPIOB_PIN4) | \
|
|
||||||
PIN_MODE_INPUT(GPIOB_PIN5) | \
|
|
||||||
PIN_MODE_INPUT(GPIOB_PIN6) | \
|
|
||||||
PIN_MODE_INPUT(GPIOB_PIN7) | \
|
|
||||||
PIN_MODE_INPUT(GPIOB_PIN8) | \
|
|
||||||
PIN_MODE_INPUT(GPIOB_PIN9) | \
|
|
||||||
PIN_MODE_INPUT(GPIOB_PIN10) | \
|
|
||||||
PIN_MODE_INPUT(GPIOB_PIN11) | \
|
|
||||||
PIN_MODE_INPUT(GPIOB_PIN12) | \
|
|
||||||
PIN_MODE_ALTERNATE(GPIOB_SPI2_SCK) | \
|
|
||||||
PIN_MODE_ALTERNATE(GPIOB_SPI2_MISO) | \
|
|
||||||
PIN_MODE_ALTERNATE(GPIOB_SPI2_MOSI))
|
|
||||||
#define VAL_GPIOB_OTYPER (PIN_OTYPE_PUSHPULL(GPIOB_PIN0) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOB_PIN1) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOB_PIN2) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOB_PIN3) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOB_PIN4) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOB_PIN5) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOB_PIN6) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOB_PIN7) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOB_PIN8) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOB_PIN9) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOB_PIN10) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOB_PIN11) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOB_PIN12) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOB_SPI2_SCK) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOB_SPI2_MISO) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOB_SPI2_MOSI))
|
|
||||||
#define VAL_GPIOB_OSPEEDR (PIN_OSPEED_VERYLOW(GPIOB_PIN0) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOB_PIN1) | \
|
|
||||||
PIN_OSPEED_HIGH(GPIOB_PIN2) | \
|
|
||||||
PIN_OSPEED_HIGH(GPIOB_PIN3) | \
|
|
||||||
PIN_OSPEED_HIGH(GPIOB_PIN4) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOB_PIN5) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOB_PIN6) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOB_PIN7) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOB_PIN8) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOB_PIN9) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOB_PIN10) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOB_PIN11) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOB_PIN12) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOB_SPI2_SCK) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOB_SPI2_MISO) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOB_SPI2_MOSI))
|
|
||||||
#define VAL_GPIOB_PUPDR (PIN_PUPDR_PULLUP(GPIOB_PIN0) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOB_PIN1) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOB_PIN2) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOB_PIN3) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOB_PIN4) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOB_PIN5) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOB_PIN6) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOB_PIN7) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOB_PIN8) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOB_PIN9) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOB_PIN10) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOB_PIN11) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOB_PIN12) | \
|
|
||||||
PIN_PUPDR_FLOATING(GPIOB_SPI2_SCK) | \
|
|
||||||
PIN_PUPDR_FLOATING(GPIOB_SPI2_MISO) | \
|
|
||||||
PIN_PUPDR_FLOATING(GPIOB_SPI2_MOSI))
|
|
||||||
#define VAL_GPIOB_ODR (PIN_ODR_HIGH(GPIOB_PIN0) | \
|
|
||||||
PIN_ODR_HIGH(GPIOB_PIN1) | \
|
|
||||||
PIN_ODR_HIGH(GPIOB_PIN2) | \
|
|
||||||
PIN_ODR_HIGH(GPIOB_PIN3) | \
|
|
||||||
PIN_ODR_HIGH(GPIOB_PIN4) | \
|
|
||||||
PIN_ODR_HIGH(GPIOB_PIN5) | \
|
|
||||||
PIN_ODR_HIGH(GPIOB_PIN6) | \
|
|
||||||
PIN_ODR_HIGH(GPIOB_PIN7) | \
|
|
||||||
PIN_ODR_HIGH(GPIOB_PIN8) | \
|
|
||||||
PIN_ODR_HIGH(GPIOB_PIN9) | \
|
|
||||||
PIN_ODR_HIGH(GPIOB_PIN10) | \
|
|
||||||
PIN_ODR_HIGH(GPIOB_PIN11) | \
|
|
||||||
PIN_ODR_HIGH(GPIOB_PIN12) | \
|
|
||||||
PIN_ODR_HIGH(GPIOB_SPI2_SCK) | \
|
|
||||||
PIN_ODR_HIGH(GPIOB_SPI2_MISO) | \
|
|
||||||
PIN_ODR_HIGH(GPIOB_SPI2_MOSI))
|
|
||||||
#define VAL_GPIOB_AFRL (PIN_AFIO_AF(GPIOB_PIN0, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOB_PIN1, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOB_PIN2, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOB_PIN3, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOB_PIN4, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOB_PIN5, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOB_PIN6, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOB_PIN7, 0U))
|
|
||||||
#define VAL_GPIOB_AFRH (PIN_AFIO_AF(GPIOB_PIN8, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOB_PIN9, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOB_PIN10, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOB_PIN11, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOB_PIN12, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOB_SPI2_SCK, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOB_SPI2_MISO, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOB_SPI2_MOSI, 0U))
|
|
||||||
|
|
||||||
/*
|
|
||||||
* GPIOC setup:
|
|
||||||
*
|
|
||||||
* PC0 - MEMS_CS (output pushpull maximum).
|
|
||||||
* PC1 - PIN1 (input pullup).
|
|
||||||
* PC2 - PIN2 (input pullup).
|
|
||||||
* PC3 - PIN3 (input pullup).
|
|
||||||
* PC4 - PIN4 (input pullup).
|
|
||||||
* PC5 - PIN5 (input pullup).
|
|
||||||
* PC6 - LED_RED (output pushpull maximum).
|
|
||||||
* PC7 - LED_BLUE (output pushpull maximum).
|
|
||||||
* PC8 - LED_ORANGE (output pushpull maximum).
|
|
||||||
* PC9 - LED_GREEN (output pushpull maximum).
|
|
||||||
* PC10 - PIN10 (input pullup).
|
|
||||||
* PC11 - PIN11 (input pullup).
|
|
||||||
* PC12 - PIN12 (input pullup).
|
|
||||||
* PC13 - PIN13 (input pullup).
|
|
||||||
* PC14 - OSC32_IN (input floating).
|
|
||||||
* PC15 - OSC32_OUT (input floating).
|
|
||||||
*/
|
|
||||||
#define VAL_GPIOC_MODER (PIN_MODE_OUTPUT(GPIOC_MEMS_CS) | \
|
|
||||||
PIN_MODE_INPUT(GPIOC_PIN1) | \
|
|
||||||
PIN_MODE_INPUT(GPIOC_PIN2) | \
|
|
||||||
PIN_MODE_INPUT(GPIOC_PIN3) | \
|
|
||||||
PIN_MODE_INPUT(GPIOC_PIN4) | \
|
|
||||||
PIN_MODE_INPUT(GPIOC_PIN5) | \
|
|
||||||
PIN_MODE_OUTPUT(GPIOC_LED_RED) | \
|
|
||||||
PIN_MODE_OUTPUT(GPIOC_LED_BLUE) | \
|
|
||||||
PIN_MODE_OUTPUT(GPIOC_LED_ORANGE) | \
|
|
||||||
PIN_MODE_OUTPUT(GPIOC_LED_GREEN) | \
|
|
||||||
PIN_MODE_INPUT(GPIOC_PIN10) | \
|
|
||||||
PIN_MODE_INPUT(GPIOC_PIN11) | \
|
|
||||||
PIN_MODE_INPUT(GPIOC_PIN12) | \
|
|
||||||
PIN_MODE_INPUT(GPIOC_PIN13) | \
|
|
||||||
PIN_MODE_INPUT(GPIOC_OSC32_IN) | \
|
|
||||||
PIN_MODE_INPUT(GPIOC_OSC32_OUT))
|
|
||||||
#define VAL_GPIOC_OTYPER (PIN_OTYPE_PUSHPULL(GPIOC_MEMS_CS) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOC_PIN1) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOC_PIN2) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOC_PIN3) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOC_PIN4) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOC_PIN5) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOC_LED_RED) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOC_LED_BLUE) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOC_LED_ORANGE) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOC_LED_GREEN) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOC_PIN10) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOC_PIN11) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOC_PIN12) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOC_PIN13) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOC_OSC32_IN) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOC_OSC32_OUT))
|
|
||||||
#define VAL_GPIOC_OSPEEDR (PIN_OSPEED_HIGH(GPIOC_MEMS_CS) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOC_PIN1) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOC_PIN2) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOC_PIN3) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOC_PIN4) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOC_PIN5) | \
|
|
||||||
PIN_OSPEED_HIGH(GPIOC_LED_RED) | \
|
|
||||||
PIN_OSPEED_HIGH(GPIOC_LED_BLUE) | \
|
|
||||||
PIN_OSPEED_HIGH(GPIOC_LED_ORANGE) | \
|
|
||||||
PIN_OSPEED_HIGH(GPIOC_LED_GREEN) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOC_PIN10) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOC_PIN11) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOC_PIN12) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOC_PIN13) | \
|
|
||||||
PIN_OSPEED_HIGH(GPIOC_OSC32_IN) | \
|
|
||||||
PIN_OSPEED_HIGH(GPIOC_OSC32_OUT))
|
|
||||||
#define VAL_GPIOC_PUPDR (PIN_PUPDR_FLOATING(GPIOC_MEMS_CS) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOC_PIN1) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOC_PIN2) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOC_PIN3) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOC_PIN4) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOC_PIN5) | \
|
|
||||||
PIN_PUPDR_FLOATING(GPIOC_LED_RED) | \
|
|
||||||
PIN_PUPDR_FLOATING(GPIOC_LED_BLUE) | \
|
|
||||||
PIN_PUPDR_FLOATING(GPIOC_LED_ORANGE) | \
|
|
||||||
PIN_PUPDR_FLOATING(GPIOC_LED_GREEN) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOC_PIN10) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOC_PIN11) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOC_PIN12) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOC_PIN13) | \
|
|
||||||
PIN_PUPDR_FLOATING(GPIOC_OSC32_IN) | \
|
|
||||||
PIN_PUPDR_FLOATING(GPIOC_OSC32_OUT))
|
|
||||||
#define VAL_GPIOC_ODR (PIN_ODR_HIGH(GPIOC_MEMS_CS) | \
|
|
||||||
PIN_ODR_HIGH(GPIOC_PIN1) | \
|
|
||||||
PIN_ODR_HIGH(GPIOC_PIN2) | \
|
|
||||||
PIN_ODR_HIGH(GPIOC_PIN3) | \
|
|
||||||
PIN_ODR_HIGH(GPIOC_PIN4) | \
|
|
||||||
PIN_ODR_HIGH(GPIOC_PIN5) | \
|
|
||||||
PIN_ODR_LOW(GPIOC_LED_RED) | \
|
|
||||||
PIN_ODR_LOW(GPIOC_LED_BLUE) | \
|
|
||||||
PIN_ODR_LOW(GPIOC_LED_ORANGE) | \
|
|
||||||
PIN_ODR_LOW(GPIOC_LED_GREEN) | \
|
|
||||||
PIN_ODR_HIGH(GPIOC_PIN10) | \
|
|
||||||
PIN_ODR_HIGH(GPIOC_PIN11) | \
|
|
||||||
PIN_ODR_HIGH(GPIOC_PIN12) | \
|
|
||||||
PIN_ODR_HIGH(GPIOC_PIN13) | \
|
|
||||||
PIN_ODR_HIGH(GPIOC_OSC32_IN) | \
|
|
||||||
PIN_ODR_HIGH(GPIOC_OSC32_OUT))
|
|
||||||
#define VAL_GPIOC_AFRL (PIN_AFIO_AF(GPIOC_MEMS_CS, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOC_PIN1, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOC_PIN2, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOC_PIN3, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOC_PIN4, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOC_PIN5, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOC_LED_RED, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOC_LED_BLUE, 0U))
|
|
||||||
#define VAL_GPIOC_AFRH (PIN_AFIO_AF(GPIOC_LED_ORANGE, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOC_LED_GREEN, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOC_PIN10, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOC_PIN11, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOC_PIN12, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOC_PIN13, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOC_OSC32_IN, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOC_OSC32_OUT, 0U))
|
|
||||||
|
|
||||||
/*
|
|
||||||
* GPIOD setup:
|
|
||||||
*
|
|
||||||
* PD0 - PIN0 (input pullup).
|
|
||||||
* PD1 - PIN1 (input pullup).
|
|
||||||
* PD2 - PIN2 (input pullup).
|
|
||||||
* PD3 - PIN3 (input pullup).
|
|
||||||
* PD4 - PIN4 (input pullup).
|
|
||||||
* PD5 - PIN5 (input pullup).
|
|
||||||
* PD6 - PIN6 (input pullup).
|
|
||||||
* PD7 - PIN7 (input pullup).
|
|
||||||
* PD8 - PIN8 (input pullup).
|
|
||||||
* PD9 - PIN9 (input pullup).
|
|
||||||
* PD10 - PIN10 (input pullup).
|
|
||||||
* PD11 - PIN11 (input pullup).
|
|
||||||
* PD12 - PIN12 (input pullup).
|
|
||||||
* PD13 - PIN13 (input pullup).
|
|
||||||
* PD14 - PIN14 (input pullup).
|
|
||||||
* PD15 - PIN15 (input pullup).
|
|
||||||
*/
|
|
||||||
#define VAL_GPIOD_MODER (PIN_MODE_INPUT(GPIOD_PIN0) | \
|
|
||||||
PIN_MODE_INPUT(GPIOD_PIN1) | \
|
|
||||||
PIN_MODE_INPUT(GPIOD_PIN2) | \
|
|
||||||
PIN_MODE_INPUT(GPIOD_PIN3) | \
|
|
||||||
PIN_MODE_INPUT(GPIOD_PIN4) | \
|
|
||||||
PIN_MODE_INPUT(GPIOD_PIN5) | \
|
|
||||||
PIN_MODE_INPUT(GPIOD_PIN6) | \
|
|
||||||
PIN_MODE_INPUT(GPIOD_PIN7) | \
|
|
||||||
PIN_MODE_INPUT(GPIOD_PIN8) | \
|
|
||||||
PIN_MODE_INPUT(GPIOD_PIN9) | \
|
|
||||||
PIN_MODE_INPUT(GPIOD_PIN10) | \
|
|
||||||
PIN_MODE_INPUT(GPIOD_PIN11) | \
|
|
||||||
PIN_MODE_INPUT(GPIOD_PIN12) | \
|
|
||||||
PIN_MODE_INPUT(GPIOD_PIN13) | \
|
|
||||||
PIN_MODE_INPUT(GPIOD_PIN14) | \
|
|
||||||
PIN_MODE_INPUT(GPIOD_PIN15))
|
|
||||||
#define VAL_GPIOD_OTYPER (PIN_OTYPE_PUSHPULL(GPIOD_PIN0) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOD_PIN1) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOD_PIN2) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOD_PIN3) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOD_PIN4) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOD_PIN5) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOD_PIN6) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOD_PIN7) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOD_PIN8) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOD_PIN9) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOD_PIN10) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOD_PIN11) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOD_PIN12) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOD_PIN13) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOD_PIN14) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOD_PIN15))
|
|
||||||
#define VAL_GPIOD_OSPEEDR (PIN_OSPEED_VERYLOW(GPIOD_PIN0) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOD_PIN1) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOD_PIN2) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOD_PIN3) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOD_PIN4) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOD_PIN5) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOD_PIN6) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOD_PIN7) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOD_PIN8) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOD_PIN9) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOD_PIN10) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOD_PIN11) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOD_PIN12) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOD_PIN13) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOD_PIN14) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOD_PIN15))
|
|
||||||
#define VAL_GPIOD_PUPDR (PIN_PUPDR_PULLUP(GPIOD_PIN0) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOD_PIN1) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOD_PIN2) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOD_PIN3) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOD_PIN4) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOD_PIN5) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOD_PIN6) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOD_PIN7) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOD_PIN8) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOD_PIN9) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOD_PIN10) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOD_PIN11) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOD_PIN12) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOD_PIN13) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOD_PIN14) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOD_PIN15))
|
|
||||||
#define VAL_GPIOD_ODR (PIN_ODR_HIGH(GPIOD_PIN0) | \
|
|
||||||
PIN_ODR_HIGH(GPIOD_PIN1) | \
|
|
||||||
PIN_ODR_HIGH(GPIOD_PIN2) | \
|
|
||||||
PIN_ODR_HIGH(GPIOD_PIN3) | \
|
|
||||||
PIN_ODR_HIGH(GPIOD_PIN4) | \
|
|
||||||
PIN_ODR_HIGH(GPIOD_PIN5) | \
|
|
||||||
PIN_ODR_HIGH(GPIOD_PIN6) | \
|
|
||||||
PIN_ODR_HIGH(GPIOD_PIN7) | \
|
|
||||||
PIN_ODR_HIGH(GPIOD_PIN8) | \
|
|
||||||
PIN_ODR_HIGH(GPIOD_PIN9) | \
|
|
||||||
PIN_ODR_HIGH(GPIOD_PIN10) | \
|
|
||||||
PIN_ODR_HIGH(GPIOD_PIN11) | \
|
|
||||||
PIN_ODR_HIGH(GPIOD_PIN12) | \
|
|
||||||
PIN_ODR_HIGH(GPIOD_PIN13) | \
|
|
||||||
PIN_ODR_HIGH(GPIOD_PIN14) | \
|
|
||||||
PIN_ODR_HIGH(GPIOD_PIN15))
|
|
||||||
#define VAL_GPIOD_AFRL (PIN_AFIO_AF(GPIOD_PIN0, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOD_PIN1, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOD_PIN2, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOD_PIN3, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOD_PIN4, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOD_PIN5, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOD_PIN6, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOD_PIN7, 0U))
|
|
||||||
#define VAL_GPIOD_AFRH (PIN_AFIO_AF(GPIOD_PIN8, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOD_PIN9, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOD_PIN10, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOD_PIN11, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOD_PIN12, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOD_PIN13, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOD_PIN14, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOD_PIN15, 0U))
|
|
||||||
|
|
||||||
/*
|
|
||||||
* GPIOE setup:
|
|
||||||
*
|
|
||||||
* PE0 - PIN0 (input pullup).
|
|
||||||
* PE1 - PIN1 (input pullup).
|
|
||||||
* PE2 - PIN2 (input pullup).
|
|
||||||
* PE3 - PIN3 (input pullup).
|
|
||||||
* PE4 - PIN4 (input pullup).
|
|
||||||
* PE5 - PIN5 (input pullup).
|
|
||||||
* PE6 - PIN6 (input pullup).
|
|
||||||
* PE7 - PIN7 (input pullup).
|
|
||||||
* PE8 - PIN8 (input pullup).
|
|
||||||
* PE9 - PIN9 (input pullup).
|
|
||||||
* PE10 - PIN10 (input pullup).
|
|
||||||
* PE11 - PIN11 (input pullup).
|
|
||||||
* PE12 - PIN12 (input pullup).
|
|
||||||
* PE13 - PIN13 (input pullup).
|
|
||||||
* PE14 - PIN14 (input pullup).
|
|
||||||
* PE15 - PIN15 (input pullup).
|
|
||||||
*/
|
|
||||||
#define VAL_GPIOE_MODER (PIN_MODE_INPUT(GPIOE_PIN0) | \
|
|
||||||
PIN_MODE_INPUT(GPIOE_PIN1) | \
|
|
||||||
PIN_MODE_INPUT(GPIOE_PIN2) | \
|
|
||||||
PIN_MODE_INPUT(GPIOE_PIN3) | \
|
|
||||||
PIN_MODE_INPUT(GPIOE_PIN4) | \
|
|
||||||
PIN_MODE_INPUT(GPIOE_PIN5) | \
|
|
||||||
PIN_MODE_INPUT(GPIOE_PIN6) | \
|
|
||||||
PIN_MODE_INPUT(GPIOE_PIN7) | \
|
|
||||||
PIN_MODE_INPUT(GPIOE_PIN8) | \
|
|
||||||
PIN_MODE_INPUT(GPIOE_PIN9) | \
|
|
||||||
PIN_MODE_INPUT(GPIOE_PIN10) | \
|
|
||||||
PIN_MODE_INPUT(GPIOE_PIN11) | \
|
|
||||||
PIN_MODE_INPUT(GPIOE_PIN12) | \
|
|
||||||
PIN_MODE_INPUT(GPIOE_PIN13) | \
|
|
||||||
PIN_MODE_INPUT(GPIOE_PIN14) | \
|
|
||||||
PIN_MODE_INPUT(GPIOE_PIN15))
|
|
||||||
#define VAL_GPIOE_OTYPER (PIN_OTYPE_PUSHPULL(GPIOE_PIN0) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOE_PIN1) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOE_PIN2) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOE_PIN3) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOE_PIN4) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOE_PIN5) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOE_PIN6) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOE_PIN7) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOE_PIN8) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOE_PIN9) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOE_PIN10) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOE_PIN11) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOE_PIN12) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOE_PIN13) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOE_PIN14) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOE_PIN15))
|
|
||||||
#define VAL_GPIOE_OSPEEDR (PIN_OSPEED_VERYLOW(GPIOE_PIN0) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOE_PIN1) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOE_PIN2) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOE_PIN3) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOE_PIN4) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOE_PIN5) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOE_PIN6) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOE_PIN7) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOE_PIN8) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOE_PIN9) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOE_PIN10) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOE_PIN11) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOE_PIN12) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOE_PIN13) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOE_PIN14) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOE_PIN15))
|
|
||||||
#define VAL_GPIOE_PUPDR (PIN_PUPDR_PULLUP(GPIOE_PIN0) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOE_PIN1) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOE_PIN2) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOE_PIN3) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOE_PIN4) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOE_PIN5) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOE_PIN6) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOE_PIN7) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOE_PIN8) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOE_PIN9) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOE_PIN10) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOE_PIN11) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOE_PIN12) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOE_PIN13) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOE_PIN14) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOE_PIN15))
|
|
||||||
#define VAL_GPIOE_ODR (PIN_ODR_HIGH(GPIOE_PIN0) | \
|
|
||||||
PIN_ODR_HIGH(GPIOE_PIN1) | \
|
|
||||||
PIN_ODR_HIGH(GPIOE_PIN2) | \
|
|
||||||
PIN_ODR_HIGH(GPIOE_PIN3) | \
|
|
||||||
PIN_ODR_HIGH(GPIOE_PIN4) | \
|
|
||||||
PIN_ODR_HIGH(GPIOE_PIN5) | \
|
|
||||||
PIN_ODR_HIGH(GPIOE_PIN6) | \
|
|
||||||
PIN_ODR_HIGH(GPIOE_PIN7) | \
|
|
||||||
PIN_ODR_HIGH(GPIOE_PIN8) | \
|
|
||||||
PIN_ODR_HIGH(GPIOE_PIN9) | \
|
|
||||||
PIN_ODR_HIGH(GPIOE_PIN10) | \
|
|
||||||
PIN_ODR_HIGH(GPIOE_PIN11) | \
|
|
||||||
PIN_ODR_HIGH(GPIOE_PIN12) | \
|
|
||||||
PIN_ODR_HIGH(GPIOE_PIN13) | \
|
|
||||||
PIN_ODR_HIGH(GPIOE_PIN14) | \
|
|
||||||
PIN_ODR_HIGH(GPIOE_PIN15))
|
|
||||||
#define VAL_GPIOE_AFRL (PIN_AFIO_AF(GPIOE_PIN0, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOE_PIN1, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOE_PIN2, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOE_PIN3, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOE_PIN4, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOE_PIN5, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOE_PIN6, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOE_PIN7, 0U))
|
|
||||||
#define VAL_GPIOE_AFRH (PIN_AFIO_AF(GPIOE_PIN8, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOE_PIN9, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOE_PIN10, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOE_PIN11, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOE_PIN12, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOE_PIN13, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOE_PIN14, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOE_PIN15, 0U))
|
|
||||||
|
|
||||||
/*
|
|
||||||
* GPIOF setup:
|
|
||||||
*
|
|
||||||
* PF0 - OSC_IN (input floating).
|
|
||||||
* PF1 - OSC_OUT (input floating).
|
|
||||||
* PF2 - PIN2 (input pullup).
|
|
||||||
* PF3 - PIN3 (input pullup).
|
|
||||||
* PF4 - PIN4 (input pullup).
|
|
||||||
* PF5 - PIN5 (input pullup).
|
|
||||||
* PF6 - PIN6 (input pullup).
|
|
||||||
* PF7 - PIN7 (input pullup).
|
|
||||||
* PF8 - PIN8 (input pullup).
|
|
||||||
* PF9 - PIN9 (input pullup).
|
|
||||||
* PF10 - PIN10 (input pullup).
|
|
||||||
* PF11 - PIN11 (input pullup).
|
|
||||||
* PF12 - PIN12 (input pullup).
|
|
||||||
* PF13 - PIN13 (input pullup).
|
|
||||||
* PF14 - PIN14 (input pullup).
|
|
||||||
* PF15 - PIN15 (input pullup).
|
|
||||||
*/
|
|
||||||
#define VAL_GPIOF_MODER (PIN_MODE_INPUT(GPIOF_OSC_IN) | \
|
|
||||||
PIN_MODE_INPUT(GPIOF_OSC_OUT) | \
|
|
||||||
PIN_MODE_INPUT(GPIOF_PIN2) | \
|
|
||||||
PIN_MODE_INPUT(GPIOF_PIN3) | \
|
|
||||||
PIN_MODE_INPUT(GPIOF_PIN4) | \
|
|
||||||
PIN_MODE_INPUT(GPIOF_PIN5) | \
|
|
||||||
PIN_MODE_INPUT(GPIOF_PIN6) | \
|
|
||||||
PIN_MODE_INPUT(GPIOF_PIN7) | \
|
|
||||||
PIN_MODE_INPUT(GPIOF_PIN8) | \
|
|
||||||
PIN_MODE_INPUT(GPIOF_PIN9) | \
|
|
||||||
PIN_MODE_INPUT(GPIOF_PIN10) | \
|
|
||||||
PIN_MODE_INPUT(GPIOF_PIN11) | \
|
|
||||||
PIN_MODE_INPUT(GPIOF_PIN12) | \
|
|
||||||
PIN_MODE_INPUT(GPIOF_PIN13) | \
|
|
||||||
PIN_MODE_INPUT(GPIOF_PIN14) | \
|
|
||||||
PIN_MODE_INPUT(GPIOF_PIN15))
|
|
||||||
#define VAL_GPIOF_OTYPER (PIN_OTYPE_PUSHPULL(GPIOF_OSC_IN) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOF_OSC_OUT) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOF_PIN2) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOF_PIN3) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOF_PIN4) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOF_PIN5) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOF_PIN6) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOF_PIN7) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOF_PIN8) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOF_PIN9) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOF_PIN10) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOF_PIN11) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOF_PIN12) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOF_PIN13) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOF_PIN14) | \
|
|
||||||
PIN_OTYPE_PUSHPULL(GPIOF_PIN15))
|
|
||||||
#define VAL_GPIOF_OSPEEDR (PIN_OSPEED_VERYLOW(GPIOF_OSC_IN) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOF_OSC_OUT) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOF_PIN2) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOF_PIN3) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOF_PIN4) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOF_PIN5) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOF_PIN6) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOF_PIN7) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOF_PIN8) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOF_PIN9) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOF_PIN10) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOF_PIN11) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOF_PIN12) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOF_PIN13) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOF_PIN14) | \
|
|
||||||
PIN_OSPEED_VERYLOW(GPIOF_PIN15))
|
|
||||||
#define VAL_GPIOF_PUPDR (PIN_PUPDR_FLOATING(GPIOF_OSC_IN) | \
|
|
||||||
PIN_PUPDR_FLOATING(GPIOF_OSC_OUT) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOF_PIN2) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOF_PIN3) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOF_PIN4) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOF_PIN5) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOF_PIN6) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOF_PIN7) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOF_PIN8) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOF_PIN9) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOF_PIN10) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOF_PIN11) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOF_PIN12) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOF_PIN13) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOF_PIN14) | \
|
|
||||||
PIN_PUPDR_PULLUP(GPIOF_PIN15))
|
|
||||||
#define VAL_GPIOF_ODR (PIN_ODR_HIGH(GPIOF_OSC_IN) | \
|
|
||||||
PIN_ODR_HIGH(GPIOF_OSC_OUT) | \
|
|
||||||
PIN_ODR_HIGH(GPIOF_PIN2) | \
|
|
||||||
PIN_ODR_HIGH(GPIOF_PIN3) | \
|
|
||||||
PIN_ODR_HIGH(GPIOF_PIN4) | \
|
|
||||||
PIN_ODR_HIGH(GPIOF_PIN5) | \
|
|
||||||
PIN_ODR_HIGH(GPIOF_PIN6) | \
|
|
||||||
PIN_ODR_HIGH(GPIOF_PIN7) | \
|
|
||||||
PIN_ODR_HIGH(GPIOF_PIN8) | \
|
|
||||||
PIN_ODR_HIGH(GPIOF_PIN9) | \
|
|
||||||
PIN_ODR_HIGH(GPIOF_PIN10) | \
|
|
||||||
PIN_ODR_HIGH(GPIOF_PIN11) | \
|
|
||||||
PIN_ODR_HIGH(GPIOF_PIN12) | \
|
|
||||||
PIN_ODR_HIGH(GPIOF_PIN13) | \
|
|
||||||
PIN_ODR_HIGH(GPIOF_PIN14) | \
|
|
||||||
PIN_ODR_HIGH(GPIOF_PIN15))
|
|
||||||
#define VAL_GPIOF_AFRL (PIN_AFIO_AF(GPIOF_OSC_IN, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOF_OSC_OUT, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOF_PIN2, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOF_PIN3, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOF_PIN4, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOF_PIN5, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOF_PIN6, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOF_PIN7, 0U))
|
|
||||||
#define VAL_GPIOF_AFRH (PIN_AFIO_AF(GPIOF_PIN8, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOF_PIN9, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOF_PIN10, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOF_PIN11, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOF_PIN12, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOF_PIN13, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOF_PIN14, 0U) | \
|
|
||||||
PIN_AFIO_AF(GPIOF_PIN15, 0U))
|
|
||||||
|
|
||||||
/*===========================================================================*/
|
|
||||||
/* External declarations. */
|
|
||||||
/*===========================================================================*/
|
|
||||||
|
|
||||||
#if !defined(_FROM_ASM_)
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
void boardInit(void);
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
#endif /* _FROM_ASM_ */
|
|
||||||
|
|
||||||
#endif /* BOARD_H */
|
|
|
@ -1,5 +0,0 @@
|
||||||
# List of all the board related files.
|
|
||||||
BOARDSRC = $(BOARD_PATH)/boards/ST_STM32F072B_DISCOVERY/board.c
|
|
||||||
|
|
||||||
# Required include directories
|
|
||||||
BOARDINC = $(BOARD_PATH)/boards/ST_STM32F072B_DISCOVERY
|
|
|
@ -1,703 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<!-- STM32F0xx board Template -->
|
|
||||||
<board
|
|
||||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
||||||
xsi:noNamespaceSchemaLocation="http://www.chibios.org/xml/schema/boards/stm32f0xx_board.xsd">
|
|
||||||
<configuration_settings>
|
|
||||||
<templates_path>resources/gencfg/processors/boards/stm32f0xx/templates</templates_path>
|
|
||||||
<output_path>..</output_path>
|
|
||||||
<hal_version>3.0.x</hal_version>
|
|
||||||
</configuration_settings>
|
|
||||||
<board_name>ST STM32F072B-Discovery</board_name>
|
|
||||||
<board_id>ST_STM32F072B_DISCOVERY</board_id>
|
|
||||||
<board_functions></board_functions>
|
|
||||||
<subtype>STM32F072xB</subtype>
|
|
||||||
<clocks HSEFrequency="0" HSEBypass="true" LSEFrequency="0"
|
|
||||||
LSEBypass="false" LSEDrive="3 High Drive (default)" />
|
|
||||||
<ports>
|
|
||||||
<GPIOA>
|
|
||||||
<pin0
|
|
||||||
ID="BUTTON"
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="Floating"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin1
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin2
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin3
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin4
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin5
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin6
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin7
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin8
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin9
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin10
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin11
|
|
||||||
ID="USB_DM"
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="Floating"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin12
|
|
||||||
ID="USB_DP"
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="Floating"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin13
|
|
||||||
ID="SWDIO"
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Maximum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Alternate"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin14
|
|
||||||
ID="SWCLK"
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Maximum"
|
|
||||||
Resistor="PullDown"
|
|
||||||
Level="High"
|
|
||||||
Mode="Alternate"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin15
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Maximum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
</GPIOA>
|
|
||||||
<GPIOB>
|
|
||||||
<pin0
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin1
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin2
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Maximum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin3
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Maximum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin4
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Maximum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin5
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin6
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin7
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin8
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin9
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin10
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin11
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin12
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin13
|
|
||||||
ID="SPI2_SCK"
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="Floating"
|
|
||||||
Level="High"
|
|
||||||
Mode="Alternate"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin14
|
|
||||||
ID="SPI2_MISO"
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="Floating"
|
|
||||||
Level="High"
|
|
||||||
Mode="Alternate"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin15
|
|
||||||
ID="SPI2_MOSI"
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="Floating"
|
|
||||||
Level="High"
|
|
||||||
Mode="Alternate"
|
|
||||||
Alternate="0" />
|
|
||||||
</GPIOB>
|
|
||||||
<GPIOC>
|
|
||||||
<pin0
|
|
||||||
ID="MEMS_CS"
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Maximum"
|
|
||||||
Resistor="Floating"
|
|
||||||
Level="High"
|
|
||||||
Mode="Output"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin1
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin2
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin3
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin4
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin5
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin6
|
|
||||||
ID="LED_RED"
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Maximum"
|
|
||||||
Resistor="Floating"
|
|
||||||
Level="Low"
|
|
||||||
Mode="Output"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin7
|
|
||||||
ID="LED_BLUE"
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Maximum"
|
|
||||||
Resistor="Floating"
|
|
||||||
Level="Low"
|
|
||||||
Mode="Output"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin8
|
|
||||||
ID="LED_ORANGE"
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Maximum"
|
|
||||||
Resistor="Floating"
|
|
||||||
Level="Low"
|
|
||||||
Mode="Output"
|
|
||||||
Alternate="0" ></pin8>
|
|
||||||
<pin9
|
|
||||||
ID="LED_GREEN"
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Maximum"
|
|
||||||
Resistor="Floating"
|
|
||||||
Level="Low"
|
|
||||||
Mode="Output"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin10
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin11
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin12
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin13
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin14
|
|
||||||
ID="OSC32_IN"
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Maximum"
|
|
||||||
Resistor="Floating"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin15
|
|
||||||
ID="OSC32_OUT"
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Maximum"
|
|
||||||
Resistor="Floating"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
</GPIOC>
|
|
||||||
<GPIOD>
|
|
||||||
<pin0
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin1
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin2
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin3
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin4
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin5
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin6
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin7
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin8
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin9
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin10
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin11
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin12
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin13
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin14
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin15
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
</GPIOD>
|
|
||||||
<GPIOE>
|
|
||||||
<pin0 ID="" Type="PushPull" Speed="Minimum" Resistor="PullUp"
|
|
||||||
Level="High" Mode="Input" Alternate="0" />
|
|
||||||
<pin1 ID="" Type="PushPull" Speed="Minimum" Resistor="PullUp"
|
|
||||||
Level="High" Mode="Input" Alternate="0" />
|
|
||||||
<pin2 ID="" Type="PushPull" Speed="Minimum" Resistor="PullUp"
|
|
||||||
Level="High" Mode="Input" Alternate="0" />
|
|
||||||
<pin3 ID="" Type="PushPull" Speed="Minimum" Resistor="PullUp"
|
|
||||||
Level="High" Mode="Input" Alternate="0" />
|
|
||||||
<pin4 ID="" Type="PushPull" Speed="Minimum" Resistor="PullUp"
|
|
||||||
Level="High" Mode="Input" Alternate="0" />
|
|
||||||
<pin5 ID="" Type="PushPull" Speed="Minimum" Resistor="PullUp"
|
|
||||||
Level="High" Mode="Input" Alternate="0" />
|
|
||||||
<pin6 ID="" Type="PushPull" Speed="Minimum" Resistor="PullUp"
|
|
||||||
Level="High" Mode="Input" Alternate="0" />
|
|
||||||
<pin7 ID="" Type="PushPull" Speed="Minimum" Resistor="PullUp"
|
|
||||||
Level="High" Mode="Input" Alternate="0" />
|
|
||||||
<pin8 ID="" Type="PushPull" Speed="Minimum" Resistor="PullUp"
|
|
||||||
Level="High" Mode="Input" Alternate="0" />
|
|
||||||
<pin9 ID="" Type="PushPull" Speed="Minimum" Resistor="PullUp"
|
|
||||||
Level="High" Mode="Input" Alternate="0" />
|
|
||||||
<pin10 ID="" Type="PushPull" Speed="Minimum" Resistor="PullUp"
|
|
||||||
Level="High" Mode="Input" Alternate="0" />
|
|
||||||
<pin11 ID="" Type="PushPull" Speed="Minimum" Resistor="PullUp"
|
|
||||||
Level="High" Mode="Input" Alternate="0" />
|
|
||||||
<pin12 ID="" Type="PushPull" Speed="Minimum" Resistor="PullUp"
|
|
||||||
Level="High" Mode="Input" Alternate="0" />
|
|
||||||
<pin13 ID="" Type="PushPull" Speed="Minimum" Resistor="PullUp"
|
|
||||||
Level="High" Mode="Input" Alternate="0" />
|
|
||||||
<pin14 ID="" Type="PushPull" Speed="Minimum" Resistor="PullUp"
|
|
||||||
Level="High" Mode="Input" Alternate="0" />
|
|
||||||
<pin15 ID="" Type="PushPull" Speed="Minimum" Resistor="PullUp"
|
|
||||||
Level="High" Mode="Input" Alternate="0" />
|
|
||||||
</GPIOE>
|
|
||||||
<GPIOF>
|
|
||||||
<pin0
|
|
||||||
ID="OSC_IN"
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="Floating"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin1
|
|
||||||
ID="OSC_OUT"
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="Floating"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin2
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin3
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin4
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin5
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin6
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin7
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin8
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin9
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin10
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin11
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin12
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin13
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin14
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
<pin15
|
|
||||||
ID=""
|
|
||||||
Type="PushPull"
|
|
||||||
Speed="Minimum"
|
|
||||||
Resistor="PullUp"
|
|
||||||
Level="High"
|
|
||||||
Mode="Input"
|
|
||||||
Alternate="0" />
|
|
||||||
</GPIOF>
|
|
||||||
</ports>
|
|
||||||
</board>
|
|
|
@ -17,6 +17,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
/* Ensure we jump to bootloader if the RESET keycode was pressed */
|
||||||
|
#define EARLY_INIT_PERFORM_BOOTLOADER_JUMP TRUE
|
||||||
|
|
||||||
|
/* LSE clock */
|
||||||
|
#define STM32_LSECLK 32768
|
||||||
|
|
||||||
/* USB Device descriptor parameter */
|
/* USB Device descriptor parameter */
|
||||||
#define VENDOR_ID 0xCA04
|
#define VENDOR_ID 0xCA04
|
||||||
#define PRODUCT_ID 0x57F5
|
#define PRODUCT_ID 0x57F5
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
# MCU name
|
# MCU name
|
||||||
MCU = STM32F072
|
MCU = STM32F072
|
||||||
BOARD = ST_STM32F072B_DISCOVERY
|
BOARD = GENERIC_STM32_F072XB
|
||||||
|
|
||||||
# Build Options
|
# Build Options
|
||||||
# comment out to disable the options.
|
# comment out to disable the options.
|
||||||
|
|
|
@ -54,6 +54,11 @@ backlight_config_t kb_backlight_config = {
|
||||||
.level = BACKLIGHT_LEVELS
|
.level = BACKLIGHT_LEVELS
|
||||||
};
|
};
|
||||||
|
|
||||||
|
void board_init(void) {
|
||||||
|
SYSCFG->CFGR1 |= SYSCFG_CFGR1_I2C1_DMA_RMP;
|
||||||
|
SYSCFG->CFGR1 &= ~(SYSCFG_CFGR1_SPI2_DMA_RMP);
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef VIA_ENABLE
|
#ifdef VIA_ENABLE
|
||||||
|
|
||||||
void backlight_get_value( uint8_t *data )
|
void backlight_get_value( uint8_t *data )
|
||||||
|
|
|
@ -2,7 +2,8 @@
|
||||||
MCU = STM32F303
|
MCU = STM32F303
|
||||||
|
|
||||||
# LED Configuration
|
# LED Configuration
|
||||||
LED_MATRIX_ENABLE = IS31FL3731
|
LED_MATRIX_ENABLE = yes
|
||||||
|
LED_MATRIX_DRIVER = IS31FL3731
|
||||||
|
|
||||||
# Build Options
|
# Build Options
|
||||||
# comment out to disable the options.
|
# comment out to disable the options.
|
||||||
|
|
26
keyboards/cozykeys/speedo/readme.md
Normal file
26
keyboards/cozykeys/speedo/readme.md
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
# Speedo
|
||||||
|
|
||||||
|
![Speedo](http://assets.cozykeys.xyz/images/keyboards/speedo/speedo-v3.0-angle-led-front_1600x1600.png)
|
||||||
|
|
||||||
|
- Keyboard Maintainer: [Paul Ewing](https://github.com/pcewing)
|
||||||
|
- Hardware Supported: Elite-C
|
||||||
|
- Hardware Availability: [Speedo Repository](https://github.com/cozykeys/speedo)
|
||||||
|
|
||||||
|
Make example for this keyboard (after setting up your build environment):
|
||||||
|
|
||||||
|
make speedo:default
|
||||||
|
|
||||||
|
Flashing example for this keyboard:
|
||||||
|
|
||||||
|
make speedo:default:flash
|
||||||
|
|
||||||
|
See the
|
||||||
|
[build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and
|
||||||
|
the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for
|
||||||
|
more information. Brand new to QMK? Start with our
|
||||||
|
[Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
|
||||||
|
|
||||||
|
## Flashing the Firmware
|
||||||
|
|
||||||
|
See the QMK docs for handwiring a keyboard; there is a section with
|
||||||
|
instructions on how to flash the *.hex* file to the Teensy 2.0 controller.
|
17
keyboards/cozykeys/speedo/speedo.c
Normal file
17
keyboards/cozykeys/speedo/speedo.c
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
/*
|
||||||
|
Copyright 2020 Paul Ewing
|
||||||
|
|
||||||
|
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/>.
|
||||||
|
*/
|
||||||
|
#include "speedo.h"
|
23
keyboards/cozykeys/speedo/speedo.h
Normal file
23
keyboards/cozykeys/speedo/speedo.h
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
/*
|
||||||
|
Copyright 2020 Paul Ewing
|
||||||
|
|
||||||
|
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/>.
|
||||||
|
*/
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#ifdef KEYBOARD_cozykeys_speedo_v2
|
||||||
|
#include "speedo_v2.h"
|
||||||
|
#elif KEYBOARD_cozykeys_speedo_v3
|
||||||
|
#include "speedo_v3.h"
|
||||||
|
#endif
|
44
keyboards/cozykeys/speedo/v2/config.h
Normal file
44
keyboards/cozykeys/speedo/v2/config.h
Normal file
|
@ -0,0 +1,44 @@
|
||||||
|
/*
|
||||||
|
Copyright 2020 Paul Ewing
|
||||||
|
|
||||||
|
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/>.
|
||||||
|
*/
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "config_common.h"
|
||||||
|
|
||||||
|
// USB Device descriptor parameter
|
||||||
|
#define VENDOR_ID 0xFEED
|
||||||
|
#define PRODUCT_ID 0x1192
|
||||||
|
#define DEVICE_VER 0x0002
|
||||||
|
#define MANUFACTURER CozyKeys
|
||||||
|
#define PRODUCT Speedo
|
||||||
|
|
||||||
|
// Key matrix size
|
||||||
|
#define MATRIX_ROWS 5
|
||||||
|
#define MATRIX_COLS 14
|
||||||
|
|
||||||
|
// Keyboard Matrix Assignments
|
||||||
|
#define MATRIX_ROW_PINS { D1, D2, D3, C6, C7 }
|
||||||
|
#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, B6, B5, D0, B7, B3, B2, B1, B0 }
|
||||||
|
#define UNUSED_PINS { D5, D4, D6, D7, B4 }
|
||||||
|
#define DIODE_DIRECTION COL2ROW
|
||||||
|
|
||||||
|
// Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed
|
||||||
|
#define DEBOUNCE 5
|
||||||
|
|
||||||
|
// 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
|
79
keyboards/cozykeys/speedo/v2/info.json
Normal file
79
keyboards/cozykeys/speedo/v2/info.json
Normal file
|
@ -0,0 +1,79 @@
|
||||||
|
{
|
||||||
|
"keyboard_name": "Speedo",
|
||||||
|
"url": "https://github.com/cozykeys/speedo",
|
||||||
|
"maintainer": "pcewing",
|
||||||
|
"width": 14,
|
||||||
|
"height": 5,
|
||||||
|
"layouts": {
|
||||||
|
"LAYOUT": {
|
||||||
|
"layout": [
|
||||||
|
{ "label": "k01", "x": 0.693, "y": 0.0, "r": 10 },
|
||||||
|
{ "label": "k02", "x": 1.675, "y": 0.173, "r": 10 },
|
||||||
|
{ "label": "k03", "x": 2.685, "y": 0.191, "r": 10 },
|
||||||
|
{ "label": "k04", "x": 3.712, "y": 0.106, "r": 10 },
|
||||||
|
{ "label": "k05", "x": 4.64, "y": 0.589, "r": 10 },
|
||||||
|
{ "label": "k06", "x": 5.577, "y": 1.021, "r": 10 },
|
||||||
|
{ "label": "k07", "x": 7.571, "y": 1.021, "r": -10 },
|
||||||
|
{ "label": "k08", "x": 8.507, "y": 0.589, "r": -10 },
|
||||||
|
{ "label": "k09", "x": 9.435, "y": 0.106, "r": -10 },
|
||||||
|
{ "label": "k10", "x": 10.463, "y": 0.191, "r": -10 },
|
||||||
|
{ "label": "k11", "x": 11.472, "y": 0.173, "r": -10 },
|
||||||
|
{ "label": "k12", "x": 12.454, "y": 0.0, "r": -10 },
|
||||||
|
{ "label": "k13", "x": 0.52, "y": 0.982, "r": 10 },
|
||||||
|
{ "label": "k14", "x": 1.502, "y": 1.155, "r": 10 },
|
||||||
|
{ "label": "k15", "x": 2.511, "y": 1.174, "r": 10 },
|
||||||
|
{ "label": "k16", "x": 3.539, "y": 1.088, "r": 10 },
|
||||||
|
{ "label": "k17", "x": 4.467, "y": 1.572, "r": 10 },
|
||||||
|
{ "label": "k18", "x": 5.403, "y": 2.003, "r": 10 },
|
||||||
|
{ "label": "k19", "x": 6.574, "y": 2.559, "r": 0 },
|
||||||
|
{ "label": "k20", "x": 7.744, "y": 2.003, "r": -10 },
|
||||||
|
{ "label": "k21", "x": 8.681, "y": 1.572, "r": -10 },
|
||||||
|
{ "label": "k22", "x": 9.608, "y": 1.088, "r": -10 },
|
||||||
|
{ "label": "k23", "x": 10.636, "y": 1.174, "r": -10 },
|
||||||
|
{ "label": "k24", "x": 11.645, "y": 1.155, "r": -10 },
|
||||||
|
{ "label": "k25", "x": 12.628, "y": 0.982, "r": -10 },
|
||||||
|
{ "label": "k26", "x": 0.346, "y": 1.964, "r": 10 },
|
||||||
|
{ "label": "k27", "x": 1.329, "y": 2.138, "r": 10 },
|
||||||
|
{ "label": "k28", "x": 2.338, "y": 2.156, "r": 10 },
|
||||||
|
{ "label": "k29", "x": 3.366, "y": 2.07, "r": 10 },
|
||||||
|
{ "label": "k30", "x": 4.294, "y": 2.554, "r": 10 },
|
||||||
|
{ "label": "k31", "x": 5.23, "y": 2.986, "r": 10 },
|
||||||
|
{ "label": "k32", "x": 6.574, "y": 3.557, "r": 0 },
|
||||||
|
{ "label": "k33", "x": 7.917, "y": 2.986, "r": -10 },
|
||||||
|
{ "label": "k34", "x": 8.854, "y": 2.554, "r": -10 },
|
||||||
|
{ "label": "k35", "x": 9.781, "y": 2.07, "r": -10 },
|
||||||
|
{ "label": "k36", "x": 10.809, "y": 2.156, "r": -10 },
|
||||||
|
{ "label": "k37", "x": 11.819, "y": 2.138, "r": -10 },
|
||||||
|
{ "label": "k38", "x": 12.801, "y": 1.964, "r": -10 },
|
||||||
|
{ "label": "k39", "x": 0.173, "y": 2.947, "r": 10 },
|
||||||
|
{ "label": "k40", "x": 1.155, "y": 3.12, "r": 10 },
|
||||||
|
{ "label": "k41", "x": 2.165, "y": 3.138, "r": 10 },
|
||||||
|
{ "label": "k42", "x": 3.193, "y": 3.053, "r": 10 },
|
||||||
|
{ "label": "k43", "x": 4.12, "y": 3.536, "r": 10 },
|
||||||
|
{ "label": "k44", "x": 5.057, "y": 3.968, "r": 10 },
|
||||||
|
{ "label": "k45", "x": 6.075, "y": 4.554, "r": 0 },
|
||||||
|
{ "label": "k46", "x": 7.072, "y": 4.554, "r": 0 },
|
||||||
|
{ "label": "k47", "x": 8.09, "y": 3.968, "r": -10 },
|
||||||
|
{ "label": "k48", "x": 9.027, "y": 3.536, "r": -10 },
|
||||||
|
{ "label": "k49", "x": 9.954, "y": 3.053, "r": -10 },
|
||||||
|
{ "label": "k50", "x": 10.982, "y": 3.138, "r": -10 },
|
||||||
|
{ "label": "k51", "x": 11.992, "y": 3.12, "r": -10 },
|
||||||
|
{ "label": "k52", "x": 12.974, "y": 2.947, "r": -10 },
|
||||||
|
{ "label": "k53", "x": 0.0, "y": 3.929, "r": 10 },
|
||||||
|
{ "label": "k54", "x": 0.982, "y": 4.102, "r": 10 },
|
||||||
|
{ "label": "k55", "x": 1.992, "y": 4.12, "r": 10 },
|
||||||
|
{ "label": "k56", "x": 3.02, "y": 4.035, "r": 10 },
|
||||||
|
{ "label": "k57", "x": 3.947, "y": 4.518, "r": 10 },
|
||||||
|
{ "label": "k58", "x": 4.994, "y": 5.235, "r": 40 },
|
||||||
|
{ "label": "k59", "x": 5.753, "y": 6.064, "r": 55 },
|
||||||
|
{ "label": "k60", "x": 7.395, "y": 6.064, "r": -55 },
|
||||||
|
{ "label": "k61", "x": 8.154, "y": 5.235, "r": 40 },
|
||||||
|
{ "label": "k62", "x": 9.2, "y": 4.518, "r": -10 },
|
||||||
|
{ "label": "k63", "x": 10.128, "y": 4.035, "r": -10 },
|
||||||
|
{ "label": "k64", "x": 11.155, "y": 4.12, "r": -10 },
|
||||||
|
{ "label": "k65", "x": 12.165, "y": 4.102, "r": -10 },
|
||||||
|
{ "label": "k66", "x": 13.147, "y": 3.929, "r": -10 }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,35 +1,37 @@
|
||||||
/* Copyright 2017 Paul Ewing
|
/*
|
||||||
*
|
Copyright 2020 Paul Ewing
|
||||||
* 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
|
This program is free software: you can redistribute it and/or modify
|
||||||
* the Free Software Foundation, either version 2 of the License, or
|
it under the terms of the GNU General Public License as published by
|
||||||
* (at your option) any later version.
|
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
|
This program is distributed in the hope that it will be useful,
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
* GNU General Public License for more details.
|
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/>.
|
You should have received a copy of the GNU General Public License
|
||||||
*/
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
#include QMK_KEYBOARD_H
|
#include QMK_KEYBOARD_H
|
||||||
|
|
||||||
#define FN MO(_FN)
|
enum {
|
||||||
#define TORST TO(_RESET)
|
LAYER_DEFAULT,
|
||||||
#define TODFT TO(_DEFAULT)
|
LAYER_FN,
|
||||||
#define TODO KC_NO
|
LAYER_RESET,
|
||||||
|
|
||||||
enum speedo_layers {
|
__LAYER_COUNT,
|
||||||
_DEFAULT,
|
|
||||||
_FN,
|
|
||||||
_RESET
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#define FN MO(LAYER_FN)
|
||||||
|
#define TORST TO(LAYER_RESET)
|
||||||
|
#define TODFT TO(LAYER_DEFAULT)
|
||||||
|
#define TODO KC_NO
|
||||||
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
|
||||||
|
[LAYER_DEFAULT] = LAYOUT(
|
||||||
[_DEFAULT] = LAYOUT(
|
|
||||||
KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, \
|
KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, \
|
||||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_UP, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, \
|
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_UP, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, \
|
||||||
KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_DOWN, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \
|
KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_DOWN, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \
|
||||||
|
@ -37,7 +39,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
KC_LCTL, KC_LGUI, KC_LALT, KC_GRV, FN, KC_BSPC, KC_DEL, KC_ENT, KC_SPC, FN, TODO, KC_RALT, KC_RGUI, KC_RCTL \
|
KC_LCTL, KC_LGUI, KC_LALT, KC_GRV, FN, KC_BSPC, KC_DEL, KC_ENT, KC_SPC, FN, TODO, KC_RALT, KC_RGUI, KC_RCTL \
|
||||||
),
|
),
|
||||||
|
|
||||||
[_FN] = LAYOUT(
|
[LAYER_FN] = LAYOUT(
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, TORST, \
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, TORST, \
|
||||||
_______, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, _______, KC_PGUP, KC_HOME, KC_END, _______, _______, _______, \
|
_______, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, _______, KC_PGUP, KC_HOME, KC_END, _______, _______, _______, \
|
||||||
KC_CAPS, KC_F5, KC_F6, KC_F7, KC_F8, KC_PAUS, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, \
|
KC_CAPS, KC_F5, KC_F6, KC_F7, KC_F8, KC_PAUS, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, \
|
||||||
|
@ -45,7 +47,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
|
||||||
),
|
),
|
||||||
|
|
||||||
[_RESET] = LAYOUT(
|
[LAYER_RESET] = LAYOUT(
|
||||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, TODFT, \
|
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, TODFT, \
|
||||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \
|
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \
|
||||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \
|
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \
|
||||||
|
@ -54,19 +56,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
)
|
)
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
void matrix_init_user(void) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
void matrix_scan_user(void) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
void led_set_user(uint8_t usb_led) {
|
|
||||||
|
|
||||||
}
|
|
1
keyboards/cozykeys/speedo/v2/keymaps/default/readme.md
Normal file
1
keyboards/cozykeys/speedo/v2/keymaps/default/readme.md
Normal file
|
@ -0,0 +1 @@
|
||||||
|
# CozyKeys Speedo v2 Default Keymap
|
22
keyboards/cozykeys/speedo/v2/rules.mk
Normal file
22
keyboards/cozykeys/speedo/v2/rules.mk
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
# MCU name
|
||||||
|
MCU = atmega32u4
|
||||||
|
|
||||||
|
# Bootloader selection
|
||||||
|
BOOTLOADER = halfkay
|
||||||
|
|
||||||
|
# Build Options
|
||||||
|
# change yes to no to disable
|
||||||
|
#
|
||||||
|
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
|
||||||
|
MOUSEKEY_ENABLE = yes # Mouse keys
|
||||||
|
EXTRAKEY_ENABLE = yes # Audio control and System control
|
||||||
|
CONSOLE_ENABLE = no # Console for debug
|
||||||
|
COMMAND_ENABLE = no # Commands for debug and configuration
|
||||||
|
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||||
|
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
|
||||||
|
NKRO_ENABLE = no # USB Nkey Rollover
|
||||||
|
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
|
||||||
|
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
|
||||||
|
BLUETOOTH_ENABLE = no # Enable Bluetooth
|
||||||
|
AUDIO_ENABLE = no # Audio output
|
17
keyboards/cozykeys/speedo/v2/speedo_v2.c
Normal file
17
keyboards/cozykeys/speedo/v2/speedo_v2.c
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
/*
|
||||||
|
Copyright 2020 Paul Ewing
|
||||||
|
|
||||||
|
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/>.
|
||||||
|
*/
|
||||||
|
#include "speedo_v2.h"
|
36
keyboards/cozykeys/speedo/v2/speedo_v2.h
Normal file
36
keyboards/cozykeys/speedo/v2/speedo_v2.h
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
/*
|
||||||
|
Copyright 2020 Paul Ewing
|
||||||
|
|
||||||
|
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/>.
|
||||||
|
*/
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "quantum.h"
|
||||||
|
|
||||||
|
#define ___ KC_NO
|
||||||
|
|
||||||
|
#define LAYOUT( \
|
||||||
|
k01, k02, k03, k04, k05, k06, k07, k08, k09, k10, k11, k12, \
|
||||||
|
k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, \
|
||||||
|
k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, \
|
||||||
|
k39, k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k50, k51, k52, \
|
||||||
|
k53, k54, k55, k56, k57, k58, k59, k60, k61, k62, k63, k64, k65, k66 \
|
||||||
|
) \
|
||||||
|
{ \
|
||||||
|
{ k01, k01, k03, k04, k05, k06, ___, ___, k07, k08, k09, k10, k11, k12 }, \
|
||||||
|
{ k13, k15, k15, k16, k17, k18, k19, ___, k20, k21, k22, k23, k24, k25 }, \
|
||||||
|
{ k26, k28, k28, k29, k30, k31, ___, k32, k33, k34, k35, k36, k37, k38 }, \
|
||||||
|
{ k39, k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k50, k51, k52 }, \
|
||||||
|
{ k53, k54, k55, k56, k57, k58, k59, k60, k61, k62, k63, k64, k65, k66 } \
|
||||||
|
}
|
58
keyboards/cozykeys/speedo/v3/config.h
Normal file
58
keyboards/cozykeys/speedo/v3/config.h
Normal file
|
@ -0,0 +1,58 @@
|
||||||
|
/*
|
||||||
|
Copyright 2020 Paul Ewing
|
||||||
|
|
||||||
|
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/>.
|
||||||
|
*/
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "config_common.h"
|
||||||
|
|
||||||
|
// USB Device descriptor parameter
|
||||||
|
#define VENDOR_ID 0xFEED
|
||||||
|
#define PRODUCT_ID 0x1192
|
||||||
|
#define DEVICE_VER 0x0003
|
||||||
|
#define MANUFACTURER CozyKeys
|
||||||
|
#define PRODUCT Speedo
|
||||||
|
|
||||||
|
// Key matrix size
|
||||||
|
#define MATRIX_ROWS 5
|
||||||
|
#define MATRIX_COLS 14
|
||||||
|
|
||||||
|
// Keyboard Matrix Assignments
|
||||||
|
#define MATRIX_ROW_PINS { F0, F1, C7, D5, B7 }
|
||||||
|
#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, B6, B2, E6, D7, C6, D4, D0, D1 }
|
||||||
|
#define UNUSED_PINS { D2, D3, B0, B4 }
|
||||||
|
#define DIODE_DIRECTION COL2ROW
|
||||||
|
|
||||||
|
#ifdef RGBLIGHT_ENABLE
|
||||||
|
#define RGB_DI_PIN B5
|
||||||
|
#define RGBLED_NUM 12
|
||||||
|
#define RGBLIGHT_HUE_STEP 8
|
||||||
|
#define RGBLIGHT_SAT_STEP 8
|
||||||
|
#define RGBLIGHT_VAL_STEP 8
|
||||||
|
#define RGBLIGHT_LIMIT_VAL 255
|
||||||
|
#define RGBLIGHT_SLEEP
|
||||||
|
#define RGBLIGHT_ANIMATIONS
|
||||||
|
#define RGBLIGHT_BREATHE_TABLE_SIZE 256
|
||||||
|
#define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85
|
||||||
|
#define RGBLIGHT_EFFECT_BREATHE_MAX 255
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed
|
||||||
|
#define DEBOUNCE 5
|
||||||
|
|
||||||
|
// 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
|
79
keyboards/cozykeys/speedo/v3/info.json
Normal file
79
keyboards/cozykeys/speedo/v3/info.json
Normal file
|
@ -0,0 +1,79 @@
|
||||||
|
{
|
||||||
|
"keyboard_name": "Speedo",
|
||||||
|
"url": "https://github.com/cozykeys/speedo",
|
||||||
|
"maintainer": "pcewing",
|
||||||
|
"width": 14,
|
||||||
|
"height": 5,
|
||||||
|
"layouts": {
|
||||||
|
"LAYOUT": {
|
||||||
|
"layout": [
|
||||||
|
{ "label": "k01", "x": 0.695, "y": 0, "r": 10 },
|
||||||
|
{ "label": "k02", "x": 1.679, "y": 0.174, "r": 10 },
|
||||||
|
{ "label": "k03", "x": 2.692, "y": 0.192, "r": 10 },
|
||||||
|
{ "label": "k04", "x": 3.722, "y": 0.107, "r": 10 },
|
||||||
|
{ "label": "k05", "x": 4.652, "y": 0.591, "r": 10 },
|
||||||
|
{ "label": "k06", "x": 5.591, "y": 1.023, "r": 10 },
|
||||||
|
{ "label": "k07", "x": 9.457, "y": 1.023, "r": -10 },
|
||||||
|
{ "label": "k08", "x": 10.396, "y": 0.591, "r": -10 },
|
||||||
|
{ "label": "k09", "x": 11.326, "y": 0.107, "r": -10 },
|
||||||
|
{ "label": "k10", "x": 12.356, "y": 0.192, "r": -10 },
|
||||||
|
{ "label": "k11", "x": 13.369, "y": 0.174, "r": -10 },
|
||||||
|
{ "label": "k12", "x": 14.353, "y": 0, "r": -10 },
|
||||||
|
{ "label": "k13", "x": 0.521, "y": 0.985, "r": 10 },
|
||||||
|
{ "label": "k14", "x": 1.506, "y": 1.158, "r": 10 },
|
||||||
|
{ "label": "k15", "x": 2.518, "y": 1.177, "r": 10 },
|
||||||
|
{ "label": "k16", "x": 3.548, "y": 1.092, "r": 10 },
|
||||||
|
{ "label": "k17", "x": 4.478, "y": 1.576, "r": 10 },
|
||||||
|
{ "label": "k18", "x": 5.418, "y": 2.008, "r": 10 },
|
||||||
|
{ "label": "k19", "x": 7.524, "y": 3.305, "r": 0 },
|
||||||
|
{ "label": "k20", "x": 9.63, "y": 2.008, "r": -10 },
|
||||||
|
{ "label": "k21", "x": 10.57, "y": 1.576, "r": -10 },
|
||||||
|
{ "label": "k22", "x": 11.5, "y": 1.092, "r": -10 },
|
||||||
|
{ "label": "k23", "x": 12.53, "y": 1.177, "r": -10 },
|
||||||
|
{ "label": "k24", "x": 13.542, "y": 1.158, "r": -10 },
|
||||||
|
{ "label": "k25", "x": 14.527, "y": 0.985, "r": -10 },
|
||||||
|
{ "label": "k26", "x": 0.347, "y": 1.97, "r": 10 },
|
||||||
|
{ "label": "k27", "x": 1.332, "y": 2.143, "r": 10 },
|
||||||
|
{ "label": "k28", "x": 2.344, "y": 2.162, "r": 10 },
|
||||||
|
{ "label": "k29", "x": 3.375, "y": 2.077, "r": 10 },
|
||||||
|
{ "label": "k30", "x": 4.305, "y": 2.561, "r": 10 },
|
||||||
|
{ "label": "k31", "x": 5.244, "y": 2.993, "r": 10 },
|
||||||
|
{ "label": "k32", "x": 6.524, "y": 3.805, "r": 0 },
|
||||||
|
{ "label": "k33", "x": 8.524, "y": 3.805, "r": 0 },
|
||||||
|
{ "label": "k34", "x": 9.804, "y": 2.993, "r": -10 },
|
||||||
|
{ "label": "k35", "x": 10.743, "y": 2.561, "r": -10 },
|
||||||
|
{ "label": "k36", "x": 11.673, "y": 2.077, "r": -10 },
|
||||||
|
{ "label": "k37", "x": 12.704, "y": 2.162, "r": -10 },
|
||||||
|
{ "label": "k38", "x": 13.716, "y": 2.143, "r": -10 },
|
||||||
|
{ "label": "k39", "x": 14.701, "y": 1.97, "r": -10 },
|
||||||
|
{ "label": "k40", "x": 0.174, "y": 2.954, "r": 10 },
|
||||||
|
{ "label": "k41", "x": 1.158, "y": 3.128, "r": 10 },
|
||||||
|
{ "label": "k42", "x": 2.171, "y": 3.147, "r": 10 },
|
||||||
|
{ "label": "k43", "x": 3.201, "y": 3.062, "r": 10 },
|
||||||
|
{ "label": "k44", "x": 4.131, "y": 3.546, "r": 10 },
|
||||||
|
{ "label": "k45", "x": 5.07, "y": 3.978, "r": 10 },
|
||||||
|
{ "label": "k46", "x": 7.524, "y": 4.305, "r": 0 },
|
||||||
|
{ "label": "k47", "x": 9.978, "y": 3.978, "r": -10 },
|
||||||
|
{ "label": "k48", "x": 10.917, "y": 3.546, "r": -10 },
|
||||||
|
{ "label": "k49", "x": 11.847, "y": 3.062, "r": -10 },
|
||||||
|
{ "label": "k50", "x": 12.877, "y": 3.147, "r": -10 },
|
||||||
|
{ "label": "k51", "x": 13.89, "y": 3.128, "r": -10 },
|
||||||
|
{ "label": "k52", "x": 14.874, "y": 2.954, "r": -10 },
|
||||||
|
{ "label": "k53", "x": 0, "y": 3.939, "r": 10 },
|
||||||
|
{ "label": "k54", "x": 0.985, "y": 4.113, "r": 10 },
|
||||||
|
{ "label": "k55", "x": 1.997, "y": 4.131, "r": 10 },
|
||||||
|
{ "label": "k56", "x": 3.027, "y": 4.047, "r": 10 },
|
||||||
|
{ "label": "k57", "x": 3.957, "y": 4.53, "r": 10 },
|
||||||
|
{ "label": "k58", "x": 4.897, "y": 4.963, "r": 10 },
|
||||||
|
{ "label": "k59", "x": 5.881, "y": 5.136, "r": 10 },
|
||||||
|
{ "label": "k60", "x": 9.166, "y": 5.136, "r": -10 },
|
||||||
|
{ "label": "k61", "x": 10.151, "y": 4.963, "r": -10 },
|
||||||
|
{ "label": "k62", "x": 11.09, "y": 4.53, "r": -10 },
|
||||||
|
{ "label": "k63", "x": 12.021, "y": 4.047, "r": -10 },
|
||||||
|
{ "label": "k64", "x": 13.051, "y": 4.131, "r": -10 },
|
||||||
|
{ "label": "k65", "x": 14.063, "y": 4.113, "r": -10 },
|
||||||
|
{ "label": "k66", "x": 15.048, "y": 3.939, "r": -10 }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
49
keyboards/cozykeys/speedo/v3/keymaps/default/keymap.c
Normal file
49
keyboards/cozykeys/speedo/v3/keymaps/default/keymap.c
Normal file
|
@ -0,0 +1,49 @@
|
||||||
|
/*
|
||||||
|
Copyright 2020 Paul Ewing
|
||||||
|
|
||||||
|
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/>.
|
||||||
|
*/
|
||||||
|
#include QMK_KEYBOARD_H
|
||||||
|
|
||||||
|
enum {
|
||||||
|
LAYER_DEFAULT,
|
||||||
|
LAYER_FN,
|
||||||
|
|
||||||
|
__LAYER_COUNT,
|
||||||
|
};
|
||||||
|
|
||||||
|
#define FN MO(LAYER_FN)
|
||||||
|
|
||||||
|
#define RGB_N RGB_MOD // Rotate to next RGB mode
|
||||||
|
#define RGB_P RGB_RMOD // Rotate to next RGB mode
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[__LAYER_COUNT][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
|
||||||
|
[LAYER_DEFAULT] = LAYOUT(
|
||||||
|
KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
|
||||||
|
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_UP, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
|
||||||
|
KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_LEFT, KC_RGHT, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
|
||||||
|
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_DOWN, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
|
||||||
|
KC_LCTL, KC_LGUI, KC_LALT, KC_GRV, FN, KC_BSPC, KC_DEL, KC_ENT, KC_SPC, KC_LBRC, KC_RBRC, KC_RALT, KC_RGUI, KC_RCTL
|
||||||
|
),
|
||||||
|
|
||||||
|
[LAYER_FN] = LAYOUT(
|
||||||
|
RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, RESET,
|
||||||
|
_______, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, RGB_TOG, _______, KC_GRV, KC_LBRC, KC_RBRC, _______, _______,
|
||||||
|
KC_CAPS, KC_F5, KC_F6, KC_F7, KC_F8, KC_INS, RGB_N, RGB_P, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______,
|
||||||
|
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_PAUS, RGB_M_P, KC_HOME, KC_PGDN, KC_PGUP, KC_END, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||||
|
),
|
||||||
|
|
||||||
|
};
|
10
keyboards/cozykeys/speedo/v3/keymaps/default/readme.md
Normal file
10
keyboards/cozykeys/speedo/v3/keymaps/default/readme.md
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
# CozyKeys Speedo v3 Default Keymap
|
||||||
|
|
||||||
|
## Default Layer
|
||||||
|
|
||||||
|
![Default Layer](https://raw.githubusercontent.com/cozykeys/speedo/master/layout/speedo_layer_default.svg)
|
||||||
|
|
||||||
|
## Function Layer
|
||||||
|
|
||||||
|
![Function Layer](https://raw.githubusercontent.com/cozykeys/speedo/master/layout/speedo_layer_fn.svg)
|
||||||
|
|
22
keyboards/cozykeys/speedo/v3/rules.mk
Normal file
22
keyboards/cozykeys/speedo/v3/rules.mk
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
# MCU name
|
||||||
|
MCU = atmega32u4
|
||||||
|
|
||||||
|
# Bootloader selection
|
||||||
|
BOOTLOADER = atmel-dfu
|
||||||
|
|
||||||
|
# Build Options
|
||||||
|
# change yes to no to disable
|
||||||
|
#
|
||||||
|
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
|
||||||
|
MOUSEKEY_ENABLE = yes # Mouse keys
|
||||||
|
EXTRAKEY_ENABLE = yes # Audio control and System control
|
||||||
|
CONSOLE_ENABLE = no # Console for debug
|
||||||
|
COMMAND_ENABLE = no # Commands for debug and configuration
|
||||||
|
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||||
|
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
|
||||||
|
NKRO_ENABLE = no # USB Nkey Rollover
|
||||||
|
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
|
||||||
|
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
|
||||||
|
BLUETOOTH_ENABLE = no # Enable Bluetooth
|
||||||
|
AUDIO_ENABLE = no # Audio output
|
17
keyboards/cozykeys/speedo/v3/speedo_v3.c
Normal file
17
keyboards/cozykeys/speedo/v3/speedo_v3.c
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
/*
|
||||||
|
Copyright 2020 Paul Ewing
|
||||||
|
|
||||||
|
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/>.
|
||||||
|
*/
|
||||||
|
#include "speedo_v3.h"
|
36
keyboards/cozykeys/speedo/v3/speedo_v3.h
Normal file
36
keyboards/cozykeys/speedo/v3/speedo_v3.h
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
/*
|
||||||
|
Copyright 2020 Paul Ewing
|
||||||
|
|
||||||
|
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/>.
|
||||||
|
*/
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "quantum.h"
|
||||||
|
|
||||||
|
#define ___ KC_NO
|
||||||
|
|
||||||
|
#define LAYOUT( \
|
||||||
|
k01, k02, k03, k04, k05, k06, k07, k08, k09, k10, k11, k12, \
|
||||||
|
k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, \
|
||||||
|
k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, \
|
||||||
|
k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k50, k51, k52, \
|
||||||
|
k53, k54, k55, k56, k57, k58, k59, k60, k61, k62, k63, k64, k65, k66 \
|
||||||
|
) \
|
||||||
|
{ \
|
||||||
|
{ k01, k02, k03, k04, k05, k06, ___, ___, k07, k08, k09, k10, k11, k12 }, \
|
||||||
|
{ k13, k14, k15, k16, k17, k18, ___, ___, k20, k21, k22, k23, k24, k25 }, \
|
||||||
|
{ k26, k27, k28, k29, k30, k31, k32, k19, k34, k35, k36, k37, k38, k39 }, \
|
||||||
|
{ k40, k41, k42, k43, k44, k45, k46, k33, k47, k48, k49, k50, k51, k52 }, \
|
||||||
|
{ k53, k54, k55, k56, k57, k58, k59, k60, k61, k62, k63, k64, k65, k66 } \
|
||||||
|
}
|
|
@ -8,7 +8,7 @@ CONSOLE_ENABLE = no
|
||||||
COMMAND_ENABLE = no
|
COMMAND_ENABLE = no
|
||||||
|
|
||||||
RGBLIGHT_ENABLE = no
|
RGBLIGHT_ENABLE = no
|
||||||
RGB_MATRIX_ENABLE = WS2812
|
RGB_MATRIX_ENABLE = yes
|
||||||
|
|
||||||
OLED_DRIVER_ENABLE = yes
|
OLED_DRIVER_ENABLE = yes
|
||||||
|
|
||||||
|
|
|
@ -9,7 +9,7 @@ OLED_DRIVER_ENABLE = no
|
||||||
EXTRAKEY_ENABLE = yes
|
EXTRAKEY_ENABLE = yes
|
||||||
|
|
||||||
# enable LEDs
|
# enable LEDs
|
||||||
RGB_MATRIX_ENABLE = WS2812
|
RGB_MATRIX_ENABLE = yes
|
||||||
|
|
||||||
# using elite-c controllers
|
# using elite-c controllers
|
||||||
BOOTLOADER = qmk-dfu
|
BOOTLOADER = qmk-dfu
|
||||||
|
|
|
@ -4,7 +4,7 @@ MIDI_ENABLE = no # MIDI controls
|
||||||
AUDIO_ENABLE = no # Audio output on port C6
|
AUDIO_ENABLE = no # Audio output on port C6
|
||||||
MOUSEKEY_ENABLE = no
|
MOUSEKEY_ENABLE = no
|
||||||
RGBLIGHT_ENABLE = no
|
RGBLIGHT_ENABLE = no
|
||||||
RGB_MATRIX_ENABLE = WS2812
|
RGB_MATRIX_ENABLE = yes
|
||||||
OLED_DRIVER_ENABLE = yes
|
OLED_DRIVER_ENABLE = yes
|
||||||
|
|
||||||
# If you want to change the display of OLED, you need to change here
|
# If you want to change the display of OLED, you need to change here
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
RGB_MATRIX_ENABLE = WS2812
|
RGB_MATRIX_ENABLE = yes
|
||||||
MOUSEKEY_ENABLE = no
|
MOUSEKEY_ENABLE = no
|
||||||
OLED_DRIVER_ENABLE = yes
|
OLED_DRIVER_ENABLE = yes
|
||||||
LTO_ENABLE = yes
|
LTO_ENABLE = yes
|
||||||
|
|
|
@ -21,7 +21,7 @@ UNICODE_ENABLE = no # Unicode
|
||||||
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||||
SWAP_HANDS_ENABLE = no # Enable one-hand typing
|
SWAP_HANDS_ENABLE = no # Enable one-hand typing
|
||||||
|
|
||||||
RGB_MATRIX_ENABLE = WS2812
|
RGB_MATRIX_ENABLE = yes
|
||||||
|
|
||||||
#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 = no # Breathing sleep LED during USB suspend
|
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
RGBLIGHT_ENABLE = no
|
RGBLIGHT_ENABLE = no
|
||||||
RGB_MATRIX_ENABLE = WS2812
|
RGB_MATRIX_ENABLE = yes
|
||||||
MOUSEKEY_ENABLE = no
|
MOUSEKEY_ENABLE = no
|
||||||
NKRO_ENABLE = yes
|
NKRO_ENABLE = yes
|
||||||
OLED_DRIVER_ENABLE = yes
|
OLED_DRIVER_ENABLE = yes
|
||||||
|
|
|
@ -27,7 +27,7 @@ In your keymap's `rules.mk` file, add the following:
|
||||||
|
|
||||||
```make
|
```make
|
||||||
RGBLIGHT_ENABLE = no
|
RGBLIGHT_ENABLE = no
|
||||||
RGB_MATRIX_ENABLE = WS2812
|
RGB_MATRIX_ENABLE = yes
|
||||||
```
|
```
|
||||||
|
|
||||||
And in your `config.h` file, add the following:
|
And in your `config.h` file, add the following:
|
||||||
|
|
|
@ -27,6 +27,8 @@ AUDIO_ENABLE = no # Audio output on port C6
|
||||||
UNICODE_ENABLE = no # Unicode
|
UNICODE_ENABLE = no # Unicode
|
||||||
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||||
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
|
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
|
||||||
|
RGB_MATRIX_ENABLE = no
|
||||||
|
RGB_MATRIX_DRIVER = WS2812
|
||||||
|
|
||||||
# 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 = no # Breathing sleep LED during USB suspend
|
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue