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(DIAGONAL) |
||||
RGB_MATRIX_EFFECT(COOL_DIAGONAL) |
||||
RGB_MATRIX_EFFECT(FLOWER_BLOOMING) |
||||
RGB_MATRIX_EFFECT(KITT) |
||||
RGB_MATRIX_EFFECT(RANDOM_BREATH_RAINBOW) |
||||
|
||||
#ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS |
||||
|
||||
#include "led/custom_gradient.c" |
||||
#include "led/diagonal.c" |
||||
#include "led/cool_diagonal.c" |
||||
#include "led/flower_blooming/flower_blooming.c" |
||||
#include "led/kitt.c" |
||||
#include "led/random_breath_rainbow.c" |
||||
|
||||
|
@ -1 +1,4 @@ |
||||
SRC += lib/bongocat.c
|
||||
SRC += lib/galaxy.c
|
||||
|
||||
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(DIAGONAL) |
||||
RGB_MATRIX_EFFECT(COOL_DIAGONAL) |
||||
RGB_MATRIX_EFFECT(FLOWER_BLOOMING) |
||||
RGB_MATRIX_EFFECT(KITT) |
||||
RGB_MATRIX_EFFECT(RANDOM_BREATH_RAINBOW) |
||||
|
||||
#ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS |
||||
|
||||
#include "led/custom_gradient.c" |
||||
#include "led/diagonal.c" |
||||
#include "led/cool_diagonal.c" |
||||
#include "led/flower_blooming/flower_blooming.c" |
||||
#include "led/kitt.c" |
||||
#include "led/random_breath_rainbow.c" |
||||
|
||||
|
@ -1,3 +1,6 @@ |
||||
SRC += lib/bongocat.c
|
||||
SRC += lib/galaxy.c
|
||||
|
||||
VIA_ENABLE = 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