Refactor entire Handwired K552 keyboard (#18066)
parent
87cace28a6
commit
724aa3a4b2
@ -1,49 +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. |
|
||||||
*/ |
|
||||||
|
|
||||||
#include <hal.h> |
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief PAL setup. |
|
||||||
* @details Digital I/O ports static configuration as defined in @p board.h. |
|
||||||
* This variable is used by the HAL when initializing the PAL driver. |
|
||||||
*/ |
|
||||||
#if HAL_USE_PAL || defined(__DOXYGEN__) |
|
||||||
const PALConfig pal_default_config = |
|
||||||
{ |
|
||||||
{VAL_GPIOAODR, VAL_GPIOACRL, VAL_GPIOACRH}, |
|
||||||
{VAL_GPIOBODR, VAL_GPIOBCRL, VAL_GPIOBCRH}, |
|
||||||
{VAL_GPIOCODR, VAL_GPIOCCRL, VAL_GPIOCCRH}, |
|
||||||
{VAL_GPIODODR, VAL_GPIODCRL, VAL_GPIODCRH}, |
|
||||||
}; |
|
||||||
#endif |
|
||||||
|
|
||||||
/*
|
|
||||||
* Early initialization code. |
|
||||||
* This initialization must be performed just after stack setup and before |
|
||||||
* any other initialization. |
|
||||||
*/ |
|
||||||
void __early_init(void) { |
|
||||||
stm32_clock_init(); |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
/*
|
|
||||||
* Board-specific initialization code. |
|
||||||
*/ |
|
||||||
void boardInit(void) { |
|
||||||
|
|
||||||
} |
|
@ -1,145 +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. |
|
||||||
*/ |
|
||||||
|
|
||||||
#ifndef _BOARD_H_ |
|
||||||
#define _BOARD_H_ |
|
||||||
|
|
||||||
/*
|
|
||||||
* Board identifier. |
|
||||||
*/ |
|
||||||
#define BOARD_K552 |
|
||||||
#define BOARD_NAME "K552 keyboard" |
|
||||||
|
|
||||||
/*
|
|
||||||
* Board frequencies. |
|
||||||
*/ |
|
||||||
#define STM32_LSECLK 32768 |
|
||||||
#define STM32_HSECLK 8000000 |
|
||||||
|
|
||||||
/*
|
|
||||||
* MCU type, supported types are defined in ./os/hal/platforms/hal_lld.h. |
|
||||||
* |
|
||||||
* Only xC (256KB Flash) is defined, but it's identical to the |
|
||||||
* x8 version (64KB Flash) except for the Flash region size in the |
|
||||||
* linker script. For x8 parts use xC here and change to the x8 linker |
|
||||||
* script in the project Makefile. |
|
||||||
*/ |
|
||||||
#pragma once |
|
||||||
#include_next <board.h> |
|
||||||
#undef STM32F103xB |
|
||||||
#define STM32F103xE |
|
||||||
|
|
||||||
/*
|
|
||||||
* IO pins assignments |
|
||||||
* |
|
||||||
* numbering is sorted by onboard/connectors, as from the schematics in |
|
||||||
* http://www.vcc-gnd.com/read.php?tid=369
|
|
||||||
*/ |
|
||||||
|
|
||||||
/* on-board */ |
|
||||||
#define GPIOA_USBDM 11 // pin 8
|
|
||||||
#define GPIOA_USBDP 12 // pin 9
|
|
||||||
|
|
||||||
#define GPIOC_OSC32_IN 14 |
|
||||||
#define GPIOC_OSC32_OUT 15 |
|
||||||
|
|
||||||
/*
|
|
||||||
* I/O ports initial setup, this configuration is established soon after reset |
|
||||||
* in the initialization code. |
|
||||||
* |
|
||||||
* The digits have the following meaning: |
|
||||||
* 0 - Analog input. |
|
||||||
* 1 - Push Pull output 10MHz. |
|
||||||
* 2 - Push Pull output 2MHz. |
|
||||||
* 3 - Push Pull output 50MHz. |
|
||||||
* 4 - Digital input. |
|
||||||
* 5 - Open Drain output 10MHz. |
|
||||||
* 6 - Open Drain output 2MHz. |
|
||||||
* 7 - Open Drain output 50MHz. |
|
||||||
* 8 - Digital input with PullUp or PullDown resistor depending on ODR. |
|
||||||
* 9 - Alternate Push Pull output 10MHz. |
|
||||||
* A - Alternate Push Pull output 2MHz. |
|
||||||
* B - Alternate Push Pull output 50MHz. |
|
||||||
* C - Reserved. |
|
||||||
* D - Alternate Open Drain output 10MHz. |
|
||||||
* E - Alternate Open Drain output 2MHz. |
|
||||||
* F - Alternate Open Drain output 50MHz. |
|
||||||
* Please refer to the STM32 Reference Manual for details. |
|
||||||
*/ |
|
||||||
|
|
||||||
/*
|
|
||||||
* Port A setup. |
|
||||||
* Everything input with pull-up except: |
|
||||||
*/ |
|
||||||
#define VAL_GPIOACRL 0x88888888 /* PA7...PA0 */ |
|
||||||
#define VAL_GPIOACRH 0x88888888 /* PA15...PA8 */ |
|
||||||
#define VAL_GPIOAODR 0xFFFFFFFF |
|
||||||
|
|
||||||
/*
|
|
||||||
* Port B setup. |
|
||||||
* Everything input with pull-up except: |
|
||||||
*/ |
|
||||||
#define VAL_GPIOBCRL 0x88888888 /* PB7...PB0 */ |
|
||||||
#define VAL_GPIOBCRH 0x88888888 /* PB15...PB8 */ |
|
||||||
#define VAL_GPIOBODR 0xFFFFFFFF |
|
||||||
|
|
||||||
/*
|
|
||||||
* Port C setup. |
|
||||||
* Everything input with pull-up except: |
|
||||||
*/ |
|
||||||
#define VAL_GPIOCCRL 0x88888888 /* PC7...PC0 */ |
|
||||||
#define VAL_GPIOCCRH 0x88888888 /* PC15...PC8 */ |
|
||||||
#define VAL_GPIOCODR 0xFFFFFFFF |
|
||||||
|
|
||||||
/*
|
|
||||||
* Port D setup. |
|
||||||
* Everything input with pull-up except: |
|
||||||
* PD0 - Normal input (XTAL). |
|
||||||
* PD1 - Normal input (XTAL). |
|
||||||
*/ |
|
||||||
#define VAL_GPIODCRL 0x88888844 /* PD7...PD0 */ |
|
||||||
#define VAL_GPIODCRH 0x88888888 /* PD15...PD8 */ |
|
||||||
#define VAL_GPIODODR 0xFFFFFFFF |
|
||||||
|
|
||||||
/*
|
|
||||||
* Port E setup. |
|
||||||
* Everything input with pull-up except: |
|
||||||
*/ |
|
||||||
#define VAL_GPIOECRL 0x88888888 /* PE7...PE0 */ |
|
||||||
#define VAL_GPIOECRH 0x88888888 /* PE15...PE8 */ |
|
||||||
#define VAL_GPIOEODR 0xFFFFFFFF |
|
||||||
|
|
||||||
/*
|
|
||||||
* USB bus activation macro, required by the USB driver. |
|
||||||
*/ |
|
||||||
#define usb_lld_connect_bus(usbp) /* always connected */ |
|
||||||
|
|
||||||
/*
|
|
||||||
* USB bus de-activation macro, required by the USB driver. |
|
||||||
*/ |
|
||||||
#define usb_lld_disconnect_bus(usbp) /* always connected */ |
|
||||||
|
|
||||||
#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/k552/board.c
|
|
||||||
|
|
||||||
# Required include directories
|
|
||||||
BOARDINC = $(BOARD_PATH)/boards/k552
|
|
@ -0,0 +1,27 @@ |
|||||||
|
/* Copyright 2022 HorrorTroll <https://github.com/HorrorTroll>
|
||||||
|
* |
||||||
|
* 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 "led/flower_blooming/flower_blooming.h" |
||||||
|
|
||||||
|
static HSV FLOWER_BLOOMING_math(HSV hsv, uint8_t i, uint8_t time) { |
||||||
|
if (g_led_config.point[i].y > k_rgb_matrix_center.y) |
||||||
|
hsv.h = g_led_config.point[i].x * 3 - g_led_config.point[i].y * 3 + time; |
||||||
|
else |
||||||
|
hsv.h = g_led_config.point[i].x * 3 - g_led_config.point[i].y * 3 - time; |
||||||
|
return hsv; |
||||||
|
} |
||||||
|
|
||||||
|
bool FLOWER_BLOOMING(effect_params_t* params) { return effect_runner_bloom(params, &FLOWER_BLOOMING_math); } |
@ -0,0 +1,20 @@ |
|||||||
|
#pragma once |
||||||
|
|
||||||
|
typedef HSV (*flower_blooming_f)(HSV hsv, uint8_t i, uint8_t time); |
||||||
|
|
||||||
|
bool effect_runner_bloom(effect_params_t* params, flower_blooming_f effect_func) { |
||||||
|
RGB_MATRIX_USE_LIMITS(led_min, led_max); |
||||||
|
|
||||||
|
uint8_t time = scale16by8(g_rgb_timer, qadd8(rgb_matrix_config.speed / 10, 1)); |
||||||
|
for (uint8_t i = led_min; i < led_max; i++) { |
||||||
|
RGB_MATRIX_TEST_LED_FLAGS(); |
||||||
|
if (g_led_config.point[i].y > k_rgb_matrix_center.y) { |
||||||
|
RGB bgr = rgb_matrix_hsv_to_rgb(effect_func(rgb_matrix_config.hsv, i, time)); |
||||||
|
rgb_matrix_set_color(i, bgr.b, bgr.g, bgr.r); |
||||||
|
} else { |
||||||
|
RGB rgb = rgb_matrix_hsv_to_rgb(effect_func(rgb_matrix_config.hsv, i, time)); |
||||||
|
rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b); |
||||||
|
} |
||||||
|
} |
||||||
|
return rgb_matrix_check_finished_leds(led_max); |
||||||
|
} |
@ -1,14 +1,14 @@ |
|||||||
RGB_MATRIX_EFFECT(CUSTOM_GRADIENT) |
RGB_MATRIX_EFFECT(CUSTOM_GRADIENT) |
||||||
RGB_MATRIX_EFFECT(DIAGONAL) |
|
||||||
RGB_MATRIX_EFFECT(COOL_DIAGONAL) |
RGB_MATRIX_EFFECT(COOL_DIAGONAL) |
||||||
|
RGB_MATRIX_EFFECT(FLOWER_BLOOMING) |
||||||
RGB_MATRIX_EFFECT(KITT) |
RGB_MATRIX_EFFECT(KITT) |
||||||
RGB_MATRIX_EFFECT(RANDOM_BREATH_RAINBOW) |
RGB_MATRIX_EFFECT(RANDOM_BREATH_RAINBOW) |
||||||
|
|
||||||
#ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS |
#ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS |
||||||
|
|
||||||
#include "led/custom_gradient.c" |
#include "led/custom_gradient.c" |
||||||
#include "led/diagonal.c" |
|
||||||
#include "led/cool_diagonal.c" |
#include "led/cool_diagonal.c" |
||||||
|
#include "led/flower_blooming/flower_blooming.c" |
||||||
#include "led/kitt.c" |
#include "led/kitt.c" |
||||||
#include "led/random_breath_rainbow.c" |
#include "led/random_breath_rainbow.c" |
||||||
|
|
||||||
|
@ -1 +1,4 @@ |
|||||||
|
SRC += lib/bongocat.c
|
||||||
|
SRC += lib/galaxy.c
|
||||||
|
|
||||||
RGB_MATRIX_CUSTOM_USER = yes
|
RGB_MATRIX_CUSTOM_USER = yes
|
||||||
|
@ -0,0 +1,27 @@ |
|||||||
|
/* Copyright 2022 HorrorTroll <https://github.com/HorrorTroll>
|
||||||
|
* |
||||||
|
* 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 "led/flower_blooming/flower_blooming.h" |
||||||
|
|
||||||
|
static HSV FLOWER_BLOOMING_math(HSV hsv, uint8_t i, uint8_t time) { |
||||||
|
if (g_led_config.point[i].y > k_rgb_matrix_center.y) |
||||||
|
hsv.h = g_led_config.point[i].x * 3 - g_led_config.point[i].y * 3 + time; |
||||||
|
else |
||||||
|
hsv.h = g_led_config.point[i].x * 3 - g_led_config.point[i].y * 3 - time; |
||||||
|
return hsv; |
||||||
|
} |
||||||
|
|
||||||
|
bool FLOWER_BLOOMING(effect_params_t* params) { return effect_runner_bloom(params, &FLOWER_BLOOMING_math); } |
@ -0,0 +1,20 @@ |
|||||||
|
#pragma once |
||||||
|
|
||||||
|
typedef HSV (*flower_blooming_f)(HSV hsv, uint8_t i, uint8_t time); |
||||||
|
|
||||||
|
bool effect_runner_bloom(effect_params_t* params, flower_blooming_f effect_func) { |
||||||
|
RGB_MATRIX_USE_LIMITS(led_min, led_max); |
||||||
|
|
||||||
|
uint8_t time = scale16by8(g_rgb_timer, qadd8(rgb_matrix_config.speed / 10, 1)); |
||||||
|
for (uint8_t i = led_min; i < led_max; i++) { |
||||||
|
RGB_MATRIX_TEST_LED_FLAGS(); |
||||||
|
if (g_led_config.point[i].y > k_rgb_matrix_center.y) { |
||||||
|
RGB bgr = rgb_matrix_hsv_to_rgb(effect_func(rgb_matrix_config.hsv, i, time)); |
||||||
|
rgb_matrix_set_color(i, bgr.b, bgr.g, bgr.r); |
||||||
|
} else { |
||||||
|
RGB rgb = rgb_matrix_hsv_to_rgb(effect_func(rgb_matrix_config.hsv, i, time)); |
||||||
|
rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b); |
||||||
|
} |
||||||
|
} |
||||||
|
return rgb_matrix_check_finished_leds(led_max); |
||||||
|
} |
@ -1,14 +1,14 @@ |
|||||||
RGB_MATRIX_EFFECT(CUSTOM_GRADIENT) |
RGB_MATRIX_EFFECT(CUSTOM_GRADIENT) |
||||||
RGB_MATRIX_EFFECT(DIAGONAL) |
|
||||||
RGB_MATRIX_EFFECT(COOL_DIAGONAL) |
RGB_MATRIX_EFFECT(COOL_DIAGONAL) |
||||||
|
RGB_MATRIX_EFFECT(FLOWER_BLOOMING) |
||||||
RGB_MATRIX_EFFECT(KITT) |
RGB_MATRIX_EFFECT(KITT) |
||||||
RGB_MATRIX_EFFECT(RANDOM_BREATH_RAINBOW) |
RGB_MATRIX_EFFECT(RANDOM_BREATH_RAINBOW) |
||||||
|
|
||||||
#ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS |
#ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS |
||||||
|
|
||||||
#include "led/custom_gradient.c" |
#include "led/custom_gradient.c" |
||||||
#include "led/diagonal.c" |
|
||||||
#include "led/cool_diagonal.c" |
#include "led/cool_diagonal.c" |
||||||
|
#include "led/flower_blooming/flower_blooming.c" |
||||||
#include "led/kitt.c" |
#include "led/kitt.c" |
||||||
#include "led/random_breath_rainbow.c" |
#include "led/random_breath_rainbow.c" |
||||||
|
|
||||||
|
@ -1,3 +1,6 @@ |
|||||||
|
SRC += lib/bongocat.c
|
||||||
|
SRC += lib/galaxy.c
|
||||||
|
|
||||||
VIA_ENABLE = yes
|
VIA_ENABLE = yes
|
||||||
|
|
||||||
RGB_MATRIX_CUSTOM_USER = yes
|
RGB_MATRIX_CUSTOM_USER = yes
|
||||||
|
@ -0,0 +1,17 @@ |
|||||||
|
/* Copyright 2022 HorrorTroll <https://github.com/HorrorTroll>
|
||||||
|
* |
||||||
|
* 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/>.
|
||||||
|
*/ |
||||||
|
|
||||||
|
void render_logo(void); |
Loading…
Reference in new issue