From 2fbb7b4b91bed12f8e6227ec3ecec02a205b67ec Mon Sep 17 00:00:00 2001 From: bartool Date: Wed, 27 Sep 2023 20:13:23 +0200 Subject: [PATCH] interface and drivers --- .mxproject | 16 +- .vscode/c_cpp_properties.json | 5 +- .vscode/settings.json | 7 + Core/Inc/main.h | 4 +- Core/Src/gpio.c | 2 +- Core/Src/main.c | 55 ++--- Core/Src/spi.c | 4 +- Makefile | 13 +- app/bitmaps/bitmap_disp_buttons.c | 239 +++++++++++++++++++++ app/bitmaps/bitmap_disp_buttons.h | 36 ++++ app/bitmaps/bitmap_font_5x7.c | 211 +++++++++++++++++++ app/bitmaps/bitmap_fonts.h | 8 + app/bitmaps/bitmap_wave.c | 57 +++++ app/bitmaps/bitmap_wave.h | 13 ++ app/core/app.c | 332 ++++++++++++++++++++++++++++++ app/core/app.h | 4 + app/core/bottom_button.c | 40 ++++ app/core/bottom_button.h | 14 ++ fun_gen_amp_test.ioc | 12 +- 19 files changed, 1023 insertions(+), 49 deletions(-) create mode 100644 .vscode/settings.json create mode 100644 app/bitmaps/bitmap_disp_buttons.c create mode 100644 app/bitmaps/bitmap_disp_buttons.h create mode 100644 app/bitmaps/bitmap_font_5x7.c create mode 100644 app/bitmaps/bitmap_fonts.h create mode 100644 app/bitmaps/bitmap_wave.c create mode 100644 app/bitmaps/bitmap_wave.h create mode 100644 app/core/app.c create mode 100644 app/core/app.h create mode 100644 app/core/bottom_button.c create mode 100644 app/core/bottom_button.h diff --git a/.mxproject b/.mxproject index 98930fa..c14722d 100644 --- a/.mxproject +++ b/.mxproject @@ -1,3 +1,11 @@ +[PreviousLibFiles] +LibFiles=Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_hal_dac.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_ll_dac.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_hal_dac_ex.h;Drivers\STM32F3xx_HAL_Driver\Inc\Legacy\stm32_hal_legacy.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_hal.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_hal_def.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_hal_rcc.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_hal_rcc_ex.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_ll_bus.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_ll_rcc.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_ll_crs.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_ll_system.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_ll_utils.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_hal_gpio.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_hal_gpio_ex.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_ll_gpio.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_hal_dma_ex.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_hal_dma.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_ll_dma.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_hal_cortex.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_ll_cortex.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_hal_pwr.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_hal_pwr_ex.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_ll_pwr.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_hal_flash.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_hal_flash_ex.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_hal_i2c.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_hal_i2c_ex.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_hal_exti.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_ll_exti.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_hal_spi.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_hal_spi_ex.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_hal_tim.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_hal_tim_ex.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_ll_tim.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_hal_uart.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_ll_usart.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_hal_uart_ex.h;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_dac.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_dac_ex.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_rcc.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_rcc_ex.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_gpio.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_dma.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_cortex.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_pwr.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_pwr_ex.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_flash.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_flash_ex.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_i2c.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_i2c_ex.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_exti.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_spi.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_spi_ex.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_tim.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_tim_ex.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_uart.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_uart_ex.c;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_hal_dac.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_ll_dac.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_hal_dac_ex.h;Drivers\STM32F3xx_HAL_Driver\Inc\Legacy\stm32_hal_legacy.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_hal.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_hal_def.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_hal_rcc.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_hal_rcc_ex.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_ll_bus.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_ll_rcc.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_ll_crs.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_ll_system.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_ll_utils.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_hal_gpio.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_hal_gpio_ex.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_ll_gpio.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_hal_dma_ex.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_hal_dma.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_ll_dma.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_hal_cortex.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_ll_cortex.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_hal_pwr.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_hal_pwr_ex.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_ll_pwr.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_hal_flash.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_hal_flash_ex.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_hal_i2c.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_hal_i2c_ex.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_hal_exti.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_ll_exti.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_hal_spi.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_hal_spi_ex.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_hal_tim.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_hal_tim_ex.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_ll_tim.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_hal_uart.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_ll_usart.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_hal_uart_ex.h;Drivers\CMSIS\Device\ST\STM32F3xx\Include\stm32f303xe.h;Drivers\CMSIS\Device\ST\STM32F3xx\Include\stm32f3xx.h;Drivers\CMSIS\Device\ST\STM32F3xx\Include\system_stm32f3xx.h;Drivers\CMSIS\Device\ST\STM32F3xx\Source\Templates\system_stm32f3xx.c;Drivers\CMSIS\Include\cmsis_armcc.h;Drivers\CMSIS\Include\cmsis_armclang.h;Drivers\CMSIS\Include\cmsis_compiler.h;Drivers\CMSIS\Include\cmsis_gcc.h;Drivers\CMSIS\Include\cmsis_iccarm.h;Drivers\CMSIS\Include\cmsis_version.h;Drivers\CMSIS\Include\core_armv8mbl.h;Drivers\CMSIS\Include\core_armv8mml.h;Drivers\CMSIS\Include\core_cm0.h;Drivers\CMSIS\Include\core_cm0plus.h;Drivers\CMSIS\Include\core_cm1.h;Drivers\CMSIS\Include\core_cm23.h;Drivers\CMSIS\Include\core_cm3.h;Drivers\CMSIS\Include\core_cm33.h;Drivers\CMSIS\Include\core_cm4.h;Drivers\CMSIS\Include\core_cm7.h;Drivers\CMSIS\Include\core_sc000.h;Drivers\CMSIS\Include\core_sc300.h;Drivers\CMSIS\Include\mpu_armv7.h;Drivers\CMSIS\Include\mpu_armv8.h;Drivers\CMSIS\Include\tz_context.h; + +[PreviousUsedMakefileFiles] +SourceFiles=Core\Src\main.c;Core\Src\gpio.c;Core\Src\dac.c;Core\Src\spi.c;Core\Src\tim.c;Core\Src\usart.c;Core\Src\stm32f3xx_it.c;Core\Src\stm32f3xx_hal_msp.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_dac.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_dac_ex.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_rcc.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_rcc_ex.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_gpio.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_dma.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_cortex.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_pwr.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_pwr_ex.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_flash.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_flash_ex.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_i2c.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_i2c_ex.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_exti.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_spi.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_spi_ex.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_tim.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_tim_ex.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_uart.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_uart_ex.c;Drivers\CMSIS\Device\ST\STM32F3xx\Source\Templates\system_stm32f3xx.c;Core\Src\system_stm32f3xx.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_dac.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_dac_ex.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_rcc.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_rcc_ex.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_gpio.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_dma.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_cortex.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_pwr.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_pwr_ex.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_flash.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_flash_ex.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_i2c.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_i2c_ex.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_exti.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_spi.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_spi_ex.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_tim.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_tim_ex.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_uart.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_uart_ex.c;Drivers\CMSIS\Device\ST\STM32F3xx\Source\Templates\system_stm32f3xx.c;Core\Src\system_stm32f3xx.c;;; +HeaderPath=Drivers\STM32F3xx_HAL_Driver\Inc;Drivers\STM32F3xx_HAL_Driver\Inc\Legacy;Drivers\CMSIS\Device\ST\STM32F3xx\Include;Drivers\CMSIS\Include;Core\Inc; +CDefines=USE_HAL_DRIVER;STM32F303xE;USE_HAL_DRIVER;USE_HAL_DRIVER; + [PreviousGenFiles] AdvancedFolderStructure=true HeaderFileListSize=8 @@ -25,11 +33,3 @@ SourceFolderListSize=1 SourcePath#0=..\Core\Src SourceFiles=; -[PreviousLibFiles] -LibFiles=Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_hal_dac.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_ll_dac.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_hal_dac_ex.h;Drivers\STM32F3xx_HAL_Driver\Inc\Legacy\stm32_hal_legacy.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_hal.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_hal_def.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_hal_rcc.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_hal_rcc_ex.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_ll_bus.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_ll_rcc.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_ll_crs.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_ll_system.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_ll_utils.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_hal_gpio.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_hal_gpio_ex.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_ll_gpio.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_hal_dma_ex.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_hal_dma.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_ll_dma.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_hal_cortex.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_ll_cortex.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_hal_pwr.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_hal_pwr_ex.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_ll_pwr.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_hal_flash.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_hal_flash_ex.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_hal_i2c.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_hal_i2c_ex.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_hal_exti.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_ll_exti.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_hal_spi.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_hal_spi_ex.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_hal_tim.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_hal_tim_ex.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_ll_tim.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_hal_uart.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_ll_usart.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_hal_uart_ex.h;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_dac.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_dac_ex.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_rcc.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_rcc_ex.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_gpio.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_dma.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_cortex.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_pwr.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_pwr_ex.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_flash.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_flash_ex.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_i2c.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_i2c_ex.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_exti.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_spi.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_spi_ex.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_tim.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_tim_ex.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_uart.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_uart_ex.c;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_hal_dac.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_ll_dac.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_hal_dac_ex.h;Drivers\STM32F3xx_HAL_Driver\Inc\Legacy\stm32_hal_legacy.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_hal.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_hal_def.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_hal_rcc.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_hal_rcc_ex.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_ll_bus.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_ll_rcc.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_ll_crs.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_ll_system.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_ll_utils.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_hal_gpio.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_hal_gpio_ex.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_ll_gpio.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_hal_dma_ex.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_hal_dma.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_ll_dma.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_hal_cortex.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_ll_cortex.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_hal_pwr.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_hal_pwr_ex.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_ll_pwr.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_hal_flash.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_hal_flash_ex.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_hal_i2c.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_hal_i2c_ex.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_hal_exti.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_ll_exti.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_hal_spi.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_hal_spi_ex.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_hal_tim.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_hal_tim_ex.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_ll_tim.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_hal_uart.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_ll_usart.h;Drivers\STM32F3xx_HAL_Driver\Inc\stm32f3xx_hal_uart_ex.h;Drivers\CMSIS\Device\ST\STM32F3xx\Include\stm32f303xe.h;Drivers\CMSIS\Device\ST\STM32F3xx\Include\stm32f3xx.h;Drivers\CMSIS\Device\ST\STM32F3xx\Include\system_stm32f3xx.h;Drivers\CMSIS\Device\ST\STM32F3xx\Source\Templates\system_stm32f3xx.c;Drivers\CMSIS\Include\cmsis_armcc.h;Drivers\CMSIS\Include\cmsis_armclang.h;Drivers\CMSIS\Include\cmsis_compiler.h;Drivers\CMSIS\Include\cmsis_gcc.h;Drivers\CMSIS\Include\cmsis_iccarm.h;Drivers\CMSIS\Include\cmsis_version.h;Drivers\CMSIS\Include\core_armv8mbl.h;Drivers\CMSIS\Include\core_armv8mml.h;Drivers\CMSIS\Include\core_cm0.h;Drivers\CMSIS\Include\core_cm0plus.h;Drivers\CMSIS\Include\core_cm1.h;Drivers\CMSIS\Include\core_cm23.h;Drivers\CMSIS\Include\core_cm3.h;Drivers\CMSIS\Include\core_cm33.h;Drivers\CMSIS\Include\core_cm4.h;Drivers\CMSIS\Include\core_cm7.h;Drivers\CMSIS\Include\core_sc000.h;Drivers\CMSIS\Include\core_sc300.h;Drivers\CMSIS\Include\mpu_armv7.h;Drivers\CMSIS\Include\mpu_armv8.h;Drivers\CMSIS\Include\tz_context.h; - -[PreviousUsedMakefileFiles] -SourceFiles=Core\Src\main.c;Core\Src\gpio.c;Core\Src\dac.c;Core\Src\spi.c;Core\Src\tim.c;Core\Src\usart.c;Core\Src\stm32f3xx_it.c;Core\Src\stm32f3xx_hal_msp.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_dac.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_dac_ex.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_rcc.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_rcc_ex.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_gpio.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_dma.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_cortex.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_pwr.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_pwr_ex.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_flash.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_flash_ex.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_i2c.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_i2c_ex.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_exti.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_spi.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_spi_ex.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_tim.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_tim_ex.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_uart.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_uart_ex.c;Drivers\CMSIS\Device\ST\STM32F3xx\Source\Templates\system_stm32f3xx.c;Core\Src\system_stm32f3xx.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_dac.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_dac_ex.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_rcc.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_rcc_ex.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_gpio.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_dma.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_cortex.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_pwr.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_pwr_ex.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_flash.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_flash_ex.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_i2c.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_i2c_ex.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_exti.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_spi.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_spi_ex.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_tim.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_tim_ex.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_uart.c;Drivers\STM32F3xx_HAL_Driver\Src\stm32f3xx_hal_uart_ex.c;Drivers\CMSIS\Device\ST\STM32F3xx\Source\Templates\system_stm32f3xx.c;Core\Src\system_stm32f3xx.c;;; -HeaderPath=Drivers\STM32F3xx_HAL_Driver\Inc;Drivers\STM32F3xx_HAL_Driver\Inc\Legacy;Drivers\CMSIS\Device\ST\STM32F3xx\Include;Drivers\CMSIS\Include;Core\Inc; -CDefines=USE_HAL_DRIVER;STM32F303xE;USE_HAL_DRIVER;USE_HAL_DRIVER; - diff --git a/.vscode/c_cpp_properties.json b/.vscode/c_cpp_properties.json index d1fd43d..5221d46 100644 --- a/.vscode/c_cpp_properties.json +++ b/.vscode/c_cpp_properties.json @@ -12,11 +12,14 @@ "${workspaceFolder}/app/drivers/led", "${workspaceFolder}/app/drivers/mcp41x", "${workspaceFolder}/app/drivers/st7565", + "${workspaceFolder}/app/drivers/mcu_cs", "${workspaceFolder}/app/drivers/utils/printf", "${workspaceFolder}/app/drivers/utils/rtt", "${workspaceFolder}/app/drivers/utils/spi_cs", "${workspaceFolder}/app/drivers/utils/ulog", - "${workspaceFolder}/app/display" + "${workspaceFolder}/app/display", + "${workspaceFolder}/app/bitmaps", + "${workspaceFolder}/app/core" ], "defines": [ "_DEBUG", diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..92011a4 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,7 @@ +{ + "files.associations": { + "main.h": "c", + "st7565.h": "c", + "display_gfx.h": "c" + } +} \ No newline at end of file diff --git a/Core/Inc/main.h b/Core/Inc/main.h index d59452d..ff3dfb6 100644 --- a/Core/Inc/main.h +++ b/Core/Inc/main.h @@ -61,8 +61,8 @@ void Error_Handler(void); #define B1_GPIO_Port GPIOC #define BTN1_Pin GPIO_PIN_0 #define BTN1_GPIO_Port GPIOA -#define BTN1A1_Pin GPIO_PIN_1 -#define BTN1A1_GPIO_Port GPIOA +#define BTN2_Pin GPIO_PIN_1 +#define BTN2_GPIO_Port GPIOA #define USART_TX_Pin GPIO_PIN_2 #define USART_TX_GPIO_Port GPIOA #define USART_RX_Pin GPIO_PIN_3 diff --git a/Core/Src/gpio.c b/Core/Src/gpio.c index 1028e97..07d53e4 100644 --- a/Core/Src/gpio.c +++ b/Core/Src/gpio.c @@ -67,7 +67,7 @@ void MX_GPIO_Init(void) HAL_GPIO_Init(B1_GPIO_Port, &GPIO_InitStruct); /*Configure GPIO pins : PAPin PAPin PAPin */ - GPIO_InitStruct.Pin = BTN1_Pin|BTN1A1_Pin|BTN_CH1_Pin; + GPIO_InitStruct.Pin = BTN1_Pin|BTN2_Pin|BTN_CH1_Pin; GPIO_InitStruct.Mode = GPIO_MODE_INPUT; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); diff --git a/Core/Src/main.c b/Core/Src/main.c index 2910073..fd129ba 100644 --- a/Core/Src/main.c +++ b/Core/Src/main.c @@ -1,20 +1,20 @@ /* USER CODE BEGIN Header */ /** - ****************************************************************************** - * @file : main.c - * @brief : Main program body - ****************************************************************************** - * @attention - * - * Copyright (c) 2023 STMicroelectronics. - * All rights reserved. - * - * This software is licensed under terms that can be found in the LICENSE file - * in the root directory of this software component. - * If no LICENSE file comes with this software, it is provided AS-IS. - * - ****************************************************************************** - */ + ****************************************************************************** + * @file : main.c + * @brief : Main program body + ****************************************************************************** + * @attention + * + * Copyright (c) 2023 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ /* USER CODE END Header */ /* Includes ------------------------------------------------------------------*/ #include "main.h" @@ -26,7 +26,7 @@ /* Private includes ----------------------------------------------------------*/ /* USER CODE BEGIN Includes */ - +#include "app.h" /* USER CODE END Includes */ /* Private typedef -----------------------------------------------------------*/ @@ -94,17 +94,18 @@ int main(void) MX_USART2_UART_Init(); MX_TIM3_Init(); /* USER CODE BEGIN 2 */ - + setup(); /* USER CODE END 2 */ /* Infinite loop */ /* USER CODE BEGIN WHILE */ - while (1) - { + while (1) + { + loop(); /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ - } + } /* USER CODE END 3 */ } @@ -167,11 +168,11 @@ void SystemClock_Config(void) void Error_Handler(void) { /* USER CODE BEGIN Error_Handler_Debug */ - /* User can add his own implementation to report the HAL error return state */ - __disable_irq(); - while (1) - { - } + /* User can add his own implementation to report the HAL error return state */ + __disable_irq(); + while (1) + { + } /* USER CODE END Error_Handler_Debug */ } @@ -186,8 +187,8 @@ void Error_Handler(void) void assert_failed(uint8_t *file, uint32_t line) { /* USER CODE BEGIN 6 */ - /* User can add his own implementation to report the file name and line number, - ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */ + /* User can add his own implementation to report the file name and line number, + ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */ /* USER CODE END 6 */ } #endif /* USE_FULL_ASSERT */ diff --git a/Core/Src/spi.c b/Core/Src/spi.c index 313165b..4048d76 100644 --- a/Core/Src/spi.c +++ b/Core/Src/spi.c @@ -75,11 +75,11 @@ void MX_SPI3_Init(void) hspi3.Instance = SPI3; hspi3.Init.Mode = SPI_MODE_MASTER; hspi3.Init.Direction = SPI_DIRECTION_1LINE; - hspi3.Init.DataSize = SPI_DATASIZE_4BIT; + hspi3.Init.DataSize = SPI_DATASIZE_8BIT; hspi3.Init.CLKPolarity = SPI_POLARITY_LOW; hspi3.Init.CLKPhase = SPI_PHASE_1EDGE; hspi3.Init.NSS = SPI_NSS_SOFT; - hspi3.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_2; + hspi3.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_32; hspi3.Init.FirstBit = SPI_FIRSTBIT_MSB; hspi3.Init.TIMode = SPI_TIMODE_DISABLE; hspi3.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; diff --git a/Makefile b/Makefile index e530ec5..81b4027 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ ########################################################################################################################## -# File automatically-generated by tool: [projectgenerator] version: [3.17.1] date: [Mon Sep 25 20:07:11 CEST 2023] +# File automatically-generated by tool: [projectgenerator] version: [3.17.1] date: [Tue Sep 26 19:16:56 CEST 2023] ########################################################################################################################## # ------------------------------------------------ @@ -65,19 +65,23 @@ Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_tim.c \ Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_tim_ex.c \ Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_uart.c \ Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_uart_ex.c \ -Core/Src/system_stm32f3xx.c +Core/Src/system_stm32f3xx.c C_SOURCES += app/drivers/ad9833/ad9833.c C_SOURCES += app/drivers/hw_button/hw_button.c C_SOURCES += app/drivers/led/led.c C_SOURCES += app/drivers/mcp41x/mcp41x.c C_SOURCES += app/drivers/st7565/st7565.c +C_SOURCES += app/drivers/mcu_cs/mcu_cs.c C_SOURCES += app/drivers/utils/printf/printf.c C_SOURCES += app/drivers/utils/rtt/SEGGER_RTT.c C_SOURCES += app/drivers/utils/rtt/SEGGER_RTT_printf.c C_SOURCES += app/drivers/utils/ulog/ulog.c C_SOURCES += app/display/display_gfx.c C_SOURCES += app/display/font_gfx.c +C_SOURCES += app/bitmaps/bitmap_font_5x7.c +C_SOURCES += app/core/bottom_button.c +C_SOURCES += app/core/app.c # ASM sources ASM_SOURCES = \ @@ -144,11 +148,14 @@ C_INCLUDES += -Iapp/drivers/hw_button C_INCLUDES += -Iapp/drivers/led C_INCLUDES += -Iapp/drivers/mcp41x C_INCLUDES += -Iapp/drivers/st7565 +C_INCLUDES += -Iapp/drivers/mcu_cs C_INCLUDES += -Iapp/drivers/utils/printf C_INCLUDES += -Iapp/drivers/utils/rtt C_INCLUDES += -Iapp/drivers/utils/spi_cs C_INCLUDES += -Iapp/drivers/utils/ulog C_INCLUDES += -Iapp/display +C_INCLUDES += -Iapp/bitmaps +C_INCLUDES += -Iapp/core # compile gcc flags ASFLAGS = $(MCU) $(AS_DEFS) $(AS_INCLUDES) $(OPT) -Wall -fdata-sections -ffunction-sections @@ -219,4 +226,4 @@ clean: ####################################### -include $(wildcard $(BUILD_DIR)/*.d) -# *** EOF *** \ No newline at end of file +# *** EOF *** diff --git a/app/bitmaps/bitmap_disp_buttons.c b/app/bitmaps/bitmap_disp_buttons.c new file mode 100644 index 0000000..4e1e778 --- /dev/null +++ b/app/bitmaps/bitmap_disp_buttons.c @@ -0,0 +1,239 @@ +#include "main.h" + +#include "bitmap_disp_buttons.h" + +// clang-format off + +const uint8_t btn_fre[] = { + // res: 25x11 - 50 bytes + 0xFC,0x02,0x01,0x01,0xFD,0x25,0x25,0x25,0x05,0x01,0xFD,0x25,0x65,0xA5,0x19,0x01, + 0xFD,0x25,0x25,0x25,0x05,0x01,0x01,0x02,0xFC,0xF9,0xFA,0xFC,0xFC,0xFD,0xFC,0xFC, + 0xFC,0xFC,0xFC,0xFD,0xFC,0xFC,0xFC,0xFD,0xFC,0xFD,0xFD,0xFD,0xFD,0xFD,0xFC,0xFC, + 0xFA,0xF9, +}; + +const uint8_t btn_fre_inverse[] = { + // res: 25x11 - 50 bytes + 0xFC,0xFE,0xFF,0xFF,0x03,0xDB,0xDB,0xDB,0xFB,0xFF,0x03,0xDB,0x9B,0x5B,0xE7,0xFF, + 0x03,0xDB,0xDB,0xDB,0xFB,0xFF,0xFF,0xFE,0xFC,0xF9,0xFB,0xFF,0xFF,0xFE,0xFF,0xFF, + 0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFE,0xFE,0xFE,0xFE,0xFE,0xFF,0xFF, + 0xFB,0xF9, + +}; + +const uint8_t btn_amp[] = { + // res: 25x11 - 50 bytes + 0xFC,0x02,0x01,0x01,0xF1,0x49,0x45,0x49,0xF1,0x01,0xFD,0x09,0x11,0x09,0xFD,0x01, + 0xFD,0x25,0x25,0x25,0x19,0x01,0x01,0x02,0xFC,0xF9,0xFA,0xFC,0xFC,0xFD,0xFC,0xFC, + 0xFC,0xFD,0xFC,0xFD,0xFC,0xFC,0xFC,0xFD,0xFC,0xFD,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC, + 0xFA,0xF9, +}; + +const uint8_t btn_amp_inverse[] = { + // res: 25x11 - 50 bytes + 0xFC,0xFE,0xFF,0xFF,0x0F,0xB7,0xBB,0xB7,0x0F,0xFF,0x03,0xF7,0xEF,0xF7,0x03,0xFF, + 0x03,0xDB,0xDB,0xDB,0xE7,0xFF,0xFF,0xFE,0xFC,0xF9,0xFB,0xFF,0xFF,0xFE,0xFF,0xFF, + 0xFF,0xFE,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, + 0xFB,0xF9, +}; + +const uint8_t btn_off[] = { + // res: 25x11 - 50 bytes + 0xFC,0x02,0x01,0x01,0xF9,0x05,0x05,0x05,0xF9,0x01,0xFD,0x25,0x25,0x25,0x05,0x01, + 0xFD,0x25,0x25,0x25,0x05,0x01,0x01,0x02,0xFC,0xF9,0xFA,0xFC,0xFC,0xFC,0xFD,0xFD, + 0xFD,0xFC,0xFC,0xFD,0xFC,0xFC,0xFC,0xFC,0xFC,0xFD,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC, + 0xFA,0xF9, +}; + +const uint8_t btn_off_inverse[] = { + // res: 25x11 - 50 bytes + 0xFC,0xFE,0xFF,0xFF,0x07,0xFB,0xFB,0xFB,0x07,0xFF,0x03,0xDB,0xDB,0xDB,0xFB,0xFF, + 0x03,0xDB,0xDB,0xDB,0xFB,0xFF,0xFF,0xFE,0xFC,0xF9,0xFB,0xFF,0xFF,0xFF,0xFE,0xFE, + 0xFE,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, + 0xFB,0xF9, +}; + +const uint8_t btn_pha[] = { + // res: 25x11 - 50 bytes + 0xFC,0x02,0x01,0x01,0xFD,0x25,0x25,0x25,0x19,0x01,0xFD,0x21,0x21,0x21,0xFD,0x01, + 0xF1,0x49,0x45,0x49,0xF1,0x01,0x01,0x02,0xFC,0xF9,0xFA,0xFC,0xFC,0xFD,0xFC,0xFC, + 0xFC,0xFC,0xFC,0xFD,0xFC,0xFC,0xFC,0xFD,0xFC,0xFD,0xFC,0xFC,0xFC,0xFD,0xFC,0xFC, + 0xFA,0xF9, +}; + +const uint8_t btn_pha_inverse[] = { + // res: 25x11 - 50 bytes + 0xFC,0xFE,0xFF,0xFF,0x03,0xDB,0xDB,0xDB,0xE7,0xFF,0x03,0xDF,0xDF,0xDF,0x03,0xFF, + 0x0F,0xB7,0xBB,0xB7,0x0F,0xFF,0xFF,0xFE,0xFC,0xF9,0xFB,0xFF,0xFF,0xFE,0xFF,0xFF, + 0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF, + 0xFB,0xF9, +}; + +const uint8_t btn_wav_noraml[] = { + // res: 25x11 - 50 bytes + 0x3F,0x40,0x80,0x80,0xBF,0x80,0x87,0x80,0xBF,0x80,0x8F,0x92,0xA2,0x92,0x8F,0x80, + 0xBE,0x81,0x80,0x81,0xBE,0x80,0x80,0x40,0x3F,0x9F,0x5F,0x3F,0x3F,0x3F,0xBF,0x3F, + 0xBF,0x3F,0x3F,0xBF,0x3F,0x3F,0x3F,0xBF,0x3F,0x3F,0x3F,0xBF,0x3F,0x3F,0x3F,0x3F, + 0x5F,0x9F, +}; + +const uint8_t btn_wav_inverse[] = { + // res: 25x11 - 50 bytes + 0x3F,0x7F,0xFF,0xFF,0xC0,0xFF,0xF8,0xFF,0xC0,0xFF,0xF0,0xED,0xDD,0xED,0xF0,0xFF, + 0xC1,0xFE,0xFF,0xFE,0xC1,0xFF,0xFF,0x7F,0x3F,0x9F,0xDF,0xFF,0xFF,0xFF,0x7F,0xFF, + 0x7F,0xFF,0xFF,0x7F,0xFF,0xFF,0xFF,0x7F,0xFF,0xFF,0xFF,0x7F,0xFF,0xFF,0xFF,0xFF, + 0xDF,0x9F, +}; + +const uint8_t btn_wav_short[] = { + // res: 24x11 - 48 bytes + 0xFC,0x02,0x01,0x01,0xFD,0x01,0xE1,0x01,0xFD,0x01,0xF1,0x49,0x45,0x49,0xF1,0x01, + 0x7D,0x81,0x01,0x81,0x7D,0x01,0x02,0xFC,0xF9,0xFA,0xFC,0xFC,0xFC,0xFD,0xFC,0xFD, + 0xFC,0xFC,0xFD,0xFC,0xFC,0xFC,0xFD,0xFC,0xFC,0xFC,0xFD,0xFC,0xFC,0xFC,0xFA,0xF9, +}; + +const uint8_t btn_wav_inverse_short[] = { + // res: 24x11 - 48 bytes + 0xFC,0xFE,0xFF,0xFF,0x03,0xFF,0x1F,0xFF,0x03,0xFF,0x0F,0xB7,0xBB,0xB7,0x0F,0xFF, + 0x83,0x7F,0xFF,0x7F,0x83,0xFF,0xFE,0xFC,0xF9,0xFB,0xFF,0xFF,0xFF,0xFE,0xFF,0xFE, + 0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFB,0xF9, +}; + +const uint8_t btn_back_short[] = { + // res: 24x11 - 48 bytes + 0xFC,0x02,0x01,0x01,0x01,0x01,0x01,0x21,0x71,0xA9,0x21,0x21,0x21,0x21,0x21,0x21, + 0x3D,0x01,0x01,0x01,0x01,0x01,0x02,0xFC,0xF9,0xFA,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC, + 0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFA,0xF9, +}; + +const uint8_t btn_back_inverse_short[] = { + // res: 24x11 - 48 bytes + 0xFC,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xDF,0x8F,0x57,0xDF,0xDF,0xDF,0xDF,0xDF,0xDF, + 0xC3,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFC,0xF9,0xFB,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, + 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFB,0xF9, +}; + +const uint8_t btn_left[] = { + // res: 25x11 - 50 bytes + 0xFC,0x02,0x01,0x01,0x21,0x21,0x71,0x71,0xF9,0xF9,0x21,0x21,0x21,0x21,0x21,0x21, + 0x21,0x21,0x21,0x21,0x01,0x01,0x01,0x02,0xFC,0xF9,0xFA,0xFC,0xFC,0xFC,0xFC,0xFC, + 0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC, + 0xFA,0xF9, +}; + +const uint8_t btn_left_inverse[] = { + // res: 25x11 - 50 bytes + 0xFC,0xFE,0xFF,0xFF,0xDF,0xDF,0x8F,0x8F,0x07,0x07,0xDF,0xDF,0xDF,0xDF,0xDF,0xDF, + 0xDF,0xDF,0xDF,0xDF,0xFF,0xFF,0xFF,0xFE,0xFC,0xF9,0xFB,0xFF,0xFF,0xFF,0xFF,0xFF, + 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, + 0xFB,0xF9, +}; +const uint8_t btn_right[] = { + // res: 25x11 - 50 bytes + 0xFC,0x02,0x01,0x01,0x01,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0xF9,0xF9, + 0x71,0x71,0x21,0x21,0x01,0x01,0x01,0x02,0xFC,0xF9,0xFA,0xFC,0xFC,0xFC,0xFC,0xFC, + 0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC, + 0xFA,0xF9, +}; +const uint8_t btn_right_inverse[] = { + // res: 25x11 - 50 bytes + 0xFC,0xFE,0xFF,0xFF,0xFF,0xDF,0xDF,0xDF,0xDF,0xDF,0xDF,0xDF,0xDF,0xDF,0x07,0x07, + 0x8F,0x8F,0xDF,0xDF,0xFF,0xFF,0xFF,0xFE,0xFC,0xF9,0xFB,0xFF,0xFF,0xFF,0xFF,0xFF, + 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, + 0xFB,0xF9, +}; +const uint8_t btn_x0_01[] = { + // res: 25x11 - 50 bytes + 0xFC,0x02,0x01,0x89,0x51,0x21,0x51,0x89,0x01,0x01,0x81,0x81,0x01,0xF9,0x45,0x25, + 0x15,0xF9,0x01,0x09,0xFD,0x01,0x01,0x02,0xFC,0xF9,0xFA,0xFC,0xFC,0xFC,0xFC,0xFC, + 0xFC,0xFC,0xFC,0xFD,0xFD,0xFC,0xFC,0xFD,0xFD,0xFD,0xFC,0xFC,0xFD,0xFD,0xFD,0xFC, + 0xFA,0xF9, +}; +const uint8_t btn_x0_01_inverse[] = { + // res: 25x11 - 50 bytes + 0xFC,0xFE,0xFF,0x77,0xAF,0xDF,0xAF,0x77,0xFF,0xFF,0x7F,0x7F,0xFF,0x07,0xBB,0xDB, + 0xEB,0x07,0xFF,0xF7,0x03,0xFF,0xFF,0xFE,0xFC,0xF9,0xFB,0xFF,0xFF,0xFF,0xFF,0xFF, + 0xFF,0xFF,0xFF,0xFE,0xFE,0xFF,0xFF,0xFE,0xFE,0xFE,0xFF,0xFF,0xFE,0xFE,0xFE,0xFF, + 0xFB,0xF9, +}; +const uint8_t btn_x0_1[] = { + // res: 25x11 - 50 bytes + 0xFC,0x02,0x01,0x01,0x01,0x89,0x51,0x21,0x51,0x89,0x01,0x01,0x81,0x81,0x01,0x01, + 0x09,0xFD,0x01,0x01,0x01,0x01,0x01,0x02,0xFC,0xF9,0xFA,0xFC,0xFC,0xFC,0xFC,0xFC, + 0xFC,0xFC,0xFC,0xFC,0xFC,0xFD,0xFD,0xFC,0xFC,0xFD,0xFD,0xFD,0xFC,0xFC,0xFC,0xFC, + 0xFA,0xF9, +}; +const uint8_t btn_x0_1_inverse[] = { + // res: 25x11 - 50 bytes + 0xFC,0xFE,0xFF,0xFF,0xFF,0x77,0xAF,0xDF,0xAF,0x77,0xFF,0xFF,0x7F,0x7F,0xFF,0xFF, + 0xF7,0x03,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFC,0xF9,0xFB,0xFF,0xFF,0xFF,0xFF,0xFF, + 0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFE,0xFF,0xFF,0xFE,0xFE,0xFE,0xFF,0xFF,0xFF,0xFF, + 0xFB,0xF9, +}; +const uint8_t btn_x1[] = { + // res: 25x11 - 50 bytes + 0xFC,0x02,0x01,0x01,0x01,0x01,0x89,0x51,0x21,0x51,0x89,0x01,0x01,0x01,0x01,0x09, + 0xFD,0x01,0x01,0x01,0x01,0x01,0x01,0x02,0xFC,0xF9,0xFA,0xFC,0xFC,0xFC,0xFC,0xFC, + 0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFD,0xFD,0xFD,0xFC,0xFC,0xFC,0xFC,0xFC, + 0xFA,0xF9, +}; +const uint8_t btn_x1_inverse[] = { + // res: 25x11 - 50 bytes + 0xFC,0xFE,0xFF,0xFF,0xFF,0xFF,0x77,0xAF,0xDF,0xAF,0x77,0xFF,0xFF,0xFF,0xFF,0xF7, + 0x03,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFC,0xF9,0xFB,0xFF,0xFF,0xFF,0xFF,0xFF, + 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFE,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF, + 0xFB,0xF9, +}; +const uint8_t btn_x10[] = { + // res: 25x11 - 50 bytes + 0xFC,0x02,0x01,0x01,0x89,0x51,0x21,0x51,0x89,0x01,0x01,0x01,0x09,0xFD,0x01,0x01, + 0xF9,0x45,0x25,0x15,0xF9,0x01,0x01,0x02,0xFC,0xF9,0xFA,0xFC,0xFC,0xFC,0xFC,0xFC, + 0xFC,0xFC,0xFC,0xFC,0xFC,0xFD,0xFD,0xFD,0xFC,0xFC,0xFD,0xFD,0xFD,0xFC,0xFC,0xFC, + 0xFA,0xF9, +}; +const uint8_t btn_x10_inverse[] = { + // res: 25x11 - 50 bytes + 0xFC,0xFE,0xFF,0xFF,0x77,0xAF,0xDF,0xAF,0x77,0xFF,0xFF,0xFF,0xF7,0x03,0xFF,0xFF, + 0x07,0xBB,0xDB,0xEB,0x07,0xFF,0xFF,0xFE,0xFC,0xF9,0xFB,0xFF,0xFF,0xFF,0xFF,0xFF, + 0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFE,0xFE,0xFF,0xFF,0xFE,0xFE,0xFE,0xFF,0xFF,0xFF, + 0xFB,0xF9, +}; +const uint8_t btn_empty[] = { + // res: 25x11 - 50 bytes + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00, +}; + +// clang-format on + +const GFX_bitmap_t bitmap_btnBottom[BITMAP_BTN_MAX] = { + {25, 11, btn_fre}, + {25, 11, btn_fre_inverse}, + {25, 11, btn_amp}, + {25, 11, btn_amp_inverse}, + {25, 11, btn_off}, + {25, 11, btn_off_inverse}, + {25, 11, btn_pha}, + {25, 11, btn_pha_inverse}, + {24, 11, btn_wav_short}, + {24, 11, btn_wav_inverse_short}, + {24, 11, btn_back_short}, + {24, 11, btn_back_inverse_short}, + {25, 11, btn_left}, + {25, 11, btn_left_inverse}, + {25, 11, btn_right}, + {25, 11, btn_right_inverse}, + {25, 11, btn_x0_01}, + {25, 11, btn_x0_01_inverse}, + {25, 11, btn_x0_1}, + {25, 11, btn_x0_1_inverse}, + {25, 11, btn_x1}, + {25, 11, btn_x1_inverse}, + {25, 11, btn_x10}, + {25, 11, btn_x10_inverse}, + {25, 11, btn_empty}, + + {0, 0, NULL}, +}; diff --git a/app/bitmaps/bitmap_disp_buttons.h b/app/bitmaps/bitmap_disp_buttons.h new file mode 100644 index 0000000..885b276 --- /dev/null +++ b/app/bitmaps/bitmap_disp_buttons.h @@ -0,0 +1,36 @@ +#pragma once + +#include "display_gfx.h" + +typedef enum +{ + BITMAP_BTN_FREQ, + BITMAP_BTN_FREQ_INVERSE, + BITMAP_BTN_AMPL, + BITMAP_BTN_AMPL_INVERSE, + BITMAP_BTN_OFFS, + BITMAP_BTN_OFFS_INVERSE, + BITMAP_BTN_PHAS, + BITMAP_BTN_PHAS_INVERSE, + BITMAP_BTN_WAVE, + BITMAP_BTN_WAVE_INVERSE, + BITMAP_BTN_BACK, + BITMAP_BTN_BACK_INVERSE, + BITMAP_BTN_LEFT, + BITMAP_BTN_LEFT_INVERSE, + BITMAP_BTN_RIGHT, + BITMAP_BTN_RIGHT_INVERSE, + BITMAP_BTN_X0_01, + BITMAP_BTN_X0_01_INVERSE, + BITMAP_BTN_X0_1, + BITMAP_BTN_X0_1_INVERSE, + BITMAP_BTN_X1, + BITMAP_BTN_X1_INVERSE, + BITMAP_BTN_X10, + BITMAP_BTN_X10_INVERSE, + BITMAP_BTN_EMPTY, + BITMAP_BTN_NONE, + BITMAP_BTN_MAX, +} BITMAP_buttonName_t; + +extern const GFX_bitmap_t bitmap_btnBottom[BITMAP_BTN_MAX]; diff --git a/app/bitmaps/bitmap_font_5x7.c b/app/bitmaps/bitmap_font_5x7.c new file mode 100644 index 0000000..f86fa00 --- /dev/null +++ b/app/bitmaps/bitmap_font_5x7.c @@ -0,0 +1,211 @@ +#include "main.h" + +#include "bitmap_fonts.h" + +// clang-format off +const uint8_t font5x7[] = { + 0x00, 0x00, 0x5F, 0x00, 0x00, // 0x21 ! + 0x00, 0x07, 0x00, 0x07, 0x00, // 0x22 " + 0x14, 0x7F, 0x14, 0x7F, 0x14, // 0x23 # + 0x24, 0x2A, 0x7F, 0x2A, 0x12, // 0x24 $ + 0x23, 0x13, 0x08, 0x64, 0x62, // 0x25 % + 0x36, 0x49, 0x56, 0x20, 0x50, // 0x26 & + 0x00, 0x08, 0x07, 0x03, 0x00, // 0x27 ' + 0x00, 0x1C, 0x22, 0x41, 0x00, // 0x28 ( + 0x00, 0x41, 0x22, 0x1C, 0x00, // 0x29 ) + 0x2A, 0x1C, 0x7F, 0x1C, 0x2A, // 0x2A * + 0x08, 0x08, 0x3E, 0x08, 0x08, // 0x2B + + 0x00, 0x80, 0x70, 0x30, 0x00, // 0x2C , + 0x08, 0x08, 0x08, 0x08, 0x08, // 0x2D - + 0x00, 0x00, 0x60, 0x60, 0x00, // 0x2E . + 0x20, 0x10, 0x08, 0x04, 0x02, // 0x2F / + 0x3E, 0x51, 0x49, 0x45, 0x3E, // 0x30 0 + 0x00, 0x42, 0x7F, 0x40, 0x00, // 0x31 1 + 0x72, 0x49, 0x49, 0x49, 0x46, // 0x32 2 + 0x21, 0x41, 0x49, 0x4D, 0x33, // 0x33 3 + 0x18, 0x14, 0x12, 0x7F, 0x10, // 0x34 4 + 0x27, 0x45, 0x45, 0x45, 0x39, // 0x35 5 + 0x3C, 0x4A, 0x49, 0x49, 0x31, // 0x36 6 + 0x41, 0x21, 0x11, 0x09, 0x07, // 0x37 7 + 0x36, 0x49, 0x49, 0x49, 0x36, // 0x38 8 + 0x46, 0x49, 0x49, 0x29, 0x1E, // 0x39 9 + 0x00, 0x00, 0x14, 0x00, 0x00, // 0x3A : + 0x00, 0x40, 0x34, 0x00, 0x00, // 0x3B ; + 0x00, 0x08, 0x14, 0x22, 0x41, // 0x3C < + 0x14, 0x14, 0x14, 0x14, 0x14, // 0x3D = + 0x00, 0x41, 0x22, 0x14, 0x08, // 0x3E > + 0x02, 0x01, 0x59, 0x09, 0x06, // 0x3F ? + 0x3E, 0x41, 0x5D, 0x59, 0x4E, // 0x40 @ + 0x7C, 0x12, 0x11, 0x12, 0x7C, // 0x41 A + 0x7F, 0x49, 0x49, 0x49, 0x36, // 0x42 B + 0x3E, 0x41, 0x41, 0x41, 0x22, // 0x43 C + 0x7F, 0x41, 0x41, 0x41, 0x3E, // 0x44 D + 0x7F, 0x49, 0x49, 0x49, 0x41, // 0x45 E + 0x7F, 0x09, 0x09, 0x09, 0x01, // 0x46 F + 0x3E, 0x41, 0x41, 0x51, 0x73, // 0x47 G + 0x7F, 0x08, 0x08, 0x08, 0x7F, // 0x48 H + 0x00, 0x41, 0x7F, 0x41, 0x00, // 0x49 I + 0x20, 0x40, 0x41, 0x3F, 0x01, // 0x4A J + 0x7F, 0x08, 0x14, 0x22, 0x41, // 0x4B K + 0x7F, 0x40, 0x40, 0x40, 0x40, // 0x4C L + 0x7F, 0x02, 0x1C, 0x02, 0x7F, // 0x4D M + 0x7F, 0x04, 0x08, 0x10, 0x7F, // 0x4E N + 0x3E, 0x41, 0x41, 0x41, 0x3E, // 0x4F O + 0x7F, 0x09, 0x09, 0x09, 0x06, // 0x50 P + 0x3E, 0x41, 0x51, 0x21, 0x5E, // 0x51 Q + 0x7F, 0x09, 0x19, 0x29, 0x46, // 0x52 R + 0x26, 0x49, 0x49, 0x49, 0x32, // 0x53 S + 0x03, 0x01, 0x7F, 0x01, 0x03, // 0x54 T + 0x3F, 0x40, 0x40, 0x40, 0x3F, // 0x55 U + 0x1F, 0x20, 0x40, 0x20, 0x1F, // 0x56 V + 0x3F, 0x40, 0x38, 0x40, 0x3F, // 0x57 W + 0x63, 0x14, 0x08, 0x14, 0x63, // 0x58 X + 0x03, 0x04, 0x78, 0x04, 0x03, // 0x59 Y + 0x61, 0x59, 0x49, 0x4D, 0x43, // 0x5A Z + 0x00, 0x7F, 0x41, 0x41, 0x41, // 0x5B [ + 0x02, 0x04, 0x08, 0x10, 0x20, // 0x5C backslash + 0x00, 0x41, 0x41, 0x41, 0x7F, // 0x5D ] + 0x04, 0x02, 0x01, 0x02, 0x04, // 0x5E ^ + 0x40, 0x40, 0x40, 0x40, 0x40, // 0x5F _ + 0x00, 0x03, 0x07, 0x08, 0x00, // 0x60 ` + 0x20, 0x54, 0x54, 0x78, 0x40, // 0x61 a + 0x7F, 0x28, 0x44, 0x44, 0x38, // 0x62 b + 0x38, 0x44, 0x44, 0x44, 0x28, // 0x63 c + 0x38, 0x44, 0x44, 0x28, 0x7F, // 0x64 d + 0x38, 0x54, 0x54, 0x54, 0x18, // 0x65 e + 0x00, 0x08, 0x7E, 0x09, 0x02, // 0x66 f + 0x18, 0xA4, 0xA4, 0x9C, 0x78, // 0x67 g + 0x7F, 0x08, 0x04, 0x04, 0x78, // 0x68 h + 0x00, 0x44, 0x7D, 0x40, 0x00, // 0x69 i + 0x20, 0x40, 0x40, 0x3D, 0x00, // 0x6A j + 0x7F, 0x10, 0x28, 0x44, 0x00, // 0x6B k + 0x00, 0x41, 0x7F, 0x40, 0x00, // 0x6C l + 0x7C, 0x04, 0x78, 0x04, 0x78, // 0x6D m + 0x7C, 0x08, 0x04, 0x04, 0x78, // 0x6E n + 0x38, 0x44, 0x44, 0x44, 0x38, // 0x6F o + 0xFC, 0x18, 0x24, 0x24, 0x18, // 0x70 p + 0x18, 0x24, 0x24, 0x18, 0xFC, // 0x71 q + 0x7C, 0x08, 0x04, 0x04, 0x08, // 0x72 r + 0x48, 0x54, 0x54, 0x54, 0x24, // 0x73 s + 0x04, 0x04, 0x3F, 0x44, 0x24, // 0x74 t + 0x3C, 0x40, 0x40, 0x20, 0x7C, // 0x75 u + 0x1C, 0x20, 0x40, 0x20, 0x1C, // 0x76 v + 0x3C, 0x40, 0x30, 0x40, 0x3C, // 0x77 w + 0x44, 0x28, 0x10, 0x28, 0x44, // 0x78 x + 0x4C, 0x90, 0x90, 0x90, 0x7C, // 0x79 y + 0x44, 0x64, 0x54, 0x4C, 0x44, // 0x7A z + 0x00, 0x08, 0x36, 0x41, 0x00, // 0x7B { + 0x00, 0x00, 0x77, 0x00, 0x00, // 0x7C | + 0x00, 0x41, 0x36, 0x08, 0x00, // 0x7D } + 0x02, 0x01, 0x02, 0x04, 0x02, // 0x7E ~ +}; +// clang-format on + +/* { [Char width in bits], [Offset into arial_6ptCharBitmaps in bytes] } */ +const GFX_fontChar_t font5x7Descriptors[] = { + {5, 00}, // 0x21 ! + {5, 05}, // 0x22 " + {5, 10}, // 0x23 # + {5, 15}, // 0x24 $ + {5, 20}, // 0x25 % + {5, 25}, // 0x26 & + {5, 30}, // 0x27 ' + {5, 35}, // 0x28 ( + {5, 40}, // 0x29 ) + {5, 45}, // 0x2A * + {5, 50}, // 0x2B + + {5, 55}, // 0x2C , + {5, 60}, // 0x2D - + {5, 65}, // 0x2E . + {5, 70}, // 0x2F / + {5, 75}, // 0x30 0 + {5, 80}, // 0x31 1 + {5, 85}, // 0x32 2 + {5, 90}, // 0x33 3 + {5, 95}, // 0x34 4 + {5, 100}, // 0x35 5 + {5, 105}, // 0x36 6 + {5, 110}, // 0x37 7 + {5, 115}, // 0x38 8 + {5, 120}, // 0x39 9 + {5, 125}, // 0x3A : + {5, 130}, // 0x3B ; + {5, 135}, // 0x3C < + {5, 140}, // 0x3D = + {5, 145}, // 0x3E > + {5, 150}, // 0x3F ? + {5, 155}, // 0x40 @ + {5, 160}, // 0x41 A + {5, 165}, // 0x42 B + {5, 170}, // 0x43 C + {5, 175}, // 0x44 D + {5, 180}, // 0x45 E + {5, 185}, // 0x46 F + {5, 190}, // 0x47 G + {5, 195}, // 0x48 H + {5, 200}, // 0x49 I + {5, 205}, // 0x4A J + {5, 210}, // 0x4B K + {5, 215}, // 0x4C L + {5, 220}, // 0x4D M + {5, 225}, // 0x4E N + {5, 230}, // 0x4F O + {5, 235}, // 0x50 P + {5, 240}, // 0x51 Q + {5, 245}, // 0x52 R + {5, 250}, // 0x53 S + {5, 255}, // 0x54 T + {5, 260}, // 0x55 U + {5, 265}, // 0x56 V + {5, 270}, // 0x57 W + {5, 275}, // 0x58 X + {5, 280}, // 0x59 Y + {5, 285}, // 0x5A Z + {5, 290}, // 0x5B [ + {5, 295}, // 0x5C back + {5, 300}, // 0x5D ] + {5, 305}, // 0x5E ^ + {5, 310}, // 0x5F _ + {5, 315}, // 0x60 ` + {5, 320}, // 0x61 a + {5, 325}, // 0x62 b + {5, 330}, // 0x63 c + {5, 335}, // 0x64 d + {5, 340}, // 0x65 e + {5, 345}, // 0x66 f + {5, 350}, // 0x67 g + {5, 355}, // 0x68 h + {5, 360}, // 0x69 i + {5, 365}, // 0x6A j + {5, 370}, // 0x6B k + {5, 375}, // 0x6C l + {5, 380}, // 0x6D m + {5, 385}, // 0x6E n + {5, 390}, // 0x6F o + {5, 395}, // 0x70 p + {5, 400}, // 0x71 q + {5, 405}, // 0x72 r + {5, 410}, // 0x73 s + {5, 415}, // 0x74 t + {5, 420}, // 0x75 u + {5, 425}, // 0x76 v + {5, 430}, // 0x77 w + {5, 435}, // 0x78 x + {5, 440}, // 0x79 y + {5, 445}, // 0x7A z + {5, 450}, // 0x7B { + {5, 455}, // 0x7C | + {5, 460}, // 0x7D } + {5, 465}, // 0x7E ~ +}; + +/* Font information for Arial 6pt */ +const GFX_font_t font5x7Info = { + .heightPixels = 8, + .startChar = '!', + .endChar = '~', + .interspacePixels = 1, + .spacePixels = 3, + .charInfo = font5x7Descriptors, + .data = font5x7, +}; diff --git a/app/bitmaps/bitmap_fonts.h b/app/bitmaps/bitmap_fonts.h new file mode 100644 index 0000000..fe85ca0 --- /dev/null +++ b/app/bitmaps/bitmap_fonts.h @@ -0,0 +1,8 @@ +#pragma once + +#include "font_gfx.h" + +/* Font data for standard 5x7t */ +extern const uint8_t font5x7[]; +extern const GFX_font_t font5x7Info; +extern const GFX_fontChar_t font5x7Descriptors[]; diff --git a/app/bitmaps/bitmap_wave.c b/app/bitmaps/bitmap_wave.c new file mode 100644 index 0000000..dd7c4c6 --- /dev/null +++ b/app/bitmaps/bitmap_wave.c @@ -0,0 +1,57 @@ +#include "main.h" + +#include "bitmap_wave.h" + +// clang-format off +const uint8_t wave_sin[] = { + // res: 48x25(32) - 192 bytes + 0x00,0x00,0x80,0x60,0x10,0x08,0x04,0x04,0x02,0x02,0x01,0x01,0x01,0x01,0x02,0x02, + 0x04,0x04,0x08,0x10,0x60,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x18,0x06,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x01,0x06,0x18,0x30,0xC0,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x30, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x0C,0x10,0x20,0x40,0x40, + 0x80,0x80,0x00,0x00,0x00,0x00,0x80,0x80,0x40,0x40,0x20,0x10,0x0C,0x03,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +}; + +const uint8_t wave_tri[] = { + // res: 48x25(32) - 192 bytes + 0x00,0x00,0x00,0x00,0x00,0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01,0x02,0x04,0x08, + 0x10,0x20,0x40,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x10,0x08,0x04,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x40,0x20, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x04,0x08, + 0x10,0x20,0x40,0x80,0x00,0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +}; +const uint8_t wave_sqr[] = { + // res: 48x25(32) - 192 bytes + 0xFF,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, + 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, + 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +}; + +const GFX_bitmap_t wave[WAVE_MAX] = { + {48, 25, wave_sin}, + {48, 25, wave_tri}, + {48, 25, wave_sqr}, +}; diff --git a/app/bitmaps/bitmap_wave.h b/app/bitmaps/bitmap_wave.h new file mode 100644 index 0000000..929210c --- /dev/null +++ b/app/bitmaps/bitmap_wave.h @@ -0,0 +1,13 @@ +#pragma once + +#include "display_gfx.h" + +typedef enum +{ + WAVE_SIN, + WAVE_TRI, + WAVE_SQR, + WAVE_MAX +} BITMAP_wave_t; + +extern const GFX_bitmap_t wave[WAVE_MAX]; \ No newline at end of file diff --git a/app/core/app.c b/app/core/app.c new file mode 100644 index 0000000..fefbf11 --- /dev/null +++ b/app/core/app.c @@ -0,0 +1,332 @@ +#include "main.h" +#include "tim.h" +#include "dac.h" +#include "st7565.h" +#include "font_gfx.h" +#include "bitmap_fonts.h" +#include "bottom_button.h" +#include "printf.h" +#include "mcu_cs.h" +#include "mcp41x.h" +#include "ad9833.h" + +#define MAX_VOLT 330 +typedef enum +{ + FREQ, + WAVE, + ONOFF, + GAIN, + POT, + REF, + OFFS, + ZERO, + OPT_MAX +} option_t; + +typedef enum +{ + SIN, + TRI, + SQR +} wave_t; + +st7565_handle_t hst7565; +mcp41x_handle_t hmcp41; +MCU_cs_t hmcp41_cs; +ad9833_handle_t had9833; +MCU_cs_t had9833_cs; +GFX_display_t disp; +uint32_t last_tick; +option_t option; + +uint8_t on_off_s[2][4] = {"OFF", "ON"}; +uint8_t wave_s[3][4] = {"SIN", "TRI", "SQR"}; +uint32_t var[OPT_MAX]; + +void draw_string(void); +void update_display(void); +void encoderHandler(void); +void changeValue(int8_t inc); + +void setup(void) +{ + var[FREQ] = 1; + var[POT] = 255; + var[REF] = 197; + var[ONOFF] = 1; + + hst7565.hspi = &hspi3; + hst7565.cs_port = ST7565_CS_GPIO_Port; + hst7565.cs_pin = ST7565_CS_Pin; + hst7565.a0_port = ST7565_A0_GPIO_Port; + hst7565.a0_pin = ST7565_A0_Pin; + hst7565.rst_port = ST7565_RST_GPIO_Port; + hst7565.rst_pin = ST7565_RST_Pin; + ST7565_Init(&hst7565, &disp); + mcu_cs_init(&hmcp41_cs, AMP1_CS_GPIO_Port, AMP1_CS_Pin, GPIO_PIN_SET); + mcp41x_init(&hmcp41, &hspi2, &hmcp41_cs.super, MCP41X_10K); + + mcu_cs_init(&had9833_cs, DDS1_CS_GPIO_Port, DDS1_CS_Pin, GPIO_PIN_SET); + ad9833_init(&had9833, &hspi2, &had9833_cs.super); + + bottomButtonInit(); + + DISP_clearScreen(&disp); + DISP_writeString(&disp, &font5x7Info, (uint8_t *)"FUN GEN TEST", 24, 24, BM_NORMAL); + ST7565_DisplayAll(&hst7565); + + HAL_TIM_Encoder_Start(&htim3, TIM_CHANNEL_ALL); + HAL_DAC_Start(&hdac1, DAC1_CHANNEL_1); + for (option_t opt = 0; opt < OPT_MAX; opt++) + { + option = opt; + changeValue(0); + } + + HAL_Delay(1000); + DISP_clearScreen(&disp); + draw_string(); + last_tick = HAL_GetTick(); +} + +void loop(void) +{ + bottomButtonsHandler(); + encoderHandler(); + if (HAL_GetTick() - last_tick > 100) + { + last_tick = HAL_GetTick(); + ST7565_DisplayAll(&hst7565); + + update_display(); + } +} + +void draw_string(void) +{ + // frequenncy + DISP_writeString(&disp, &font5x7Info, (uint8_t *)"FREQ:", 8, 0, BM_NORMAL); + // wave type + DISP_writeString(&disp, &font5x7Info, (uint8_t *)"WAVE:", 8, 8, BM_NORMAL); + // dds on off + DISP_writeString(&disp, &font5x7Info, (uint8_t *)"DDS:", 8, 16, BM_NORMAL); + // gain switch + DISP_writeString(&disp, &font5x7Info, (uint8_t *)"GAIN:", 8, 24, BM_NORMAL); + // potentiometr + DISP_writeString(&disp, &font5x7Info, (uint8_t *)"POT:", 8, 32, BM_NORMAL); + // reference voltage + DISP_writeString(&disp, &font5x7Info, (uint8_t *)"REF:", 8, 40, BM_NORMAL); + // dac1 - offset + DISP_writeString(&disp, &font5x7Info, (uint8_t *)"OFFS:", 8, 48, BM_NORMAL); + // dac2 - zeroing + DISP_writeString(&disp, &font5x7Info, (uint8_t *)"ZERO:", 8, 56, BM_NORMAL); + + for (option_t opt = FREQ; opt < OPT_MAX; opt++) + { + option = opt; + update_display(); + } + + option = OFFS; +} + +void update_display(void) +{ + uint8_t data[16]; + uint32_t temp; + DISP_clearRegion(&disp, 0, 0, 8, 64); + + switch (option) + { + case FREQ: + snprintf((char *)data, 8, "%04uk", var[FREQ]); + DISP_writeString(&disp, &font5x7Info, data, 48, 0, BM_NORMAL); + DISP_writeString(&disp, &font5x7Info, (uint8_t *)"*", 0, 0, BM_NORMAL); + break; + case WAVE: + DISP_writeString(&disp, &font5x7Info, wave_s[var[WAVE]], 48, 8, BM_NORMAL); + DISP_writeString(&disp, &font5x7Info, (uint8_t *)"*", 0, 8, BM_NORMAL); + break; + case ONOFF: + DISP_clearRegion(&disp, 48, 16, 24, 8); + DISP_writeString(&disp, &font5x7Info, on_off_s[var[ONOFF]], 48, 16, BM_NORMAL); + DISP_writeString(&disp, &font5x7Info, (uint8_t *)"*", 0, 16, BM_NORMAL); + break; + case GAIN: + DISP_clearRegion(&disp, 48, 24, 24, 8); + DISP_writeString(&disp, &font5x7Info, on_off_s[var[GAIN]], 48, 24, BM_NORMAL); + DISP_writeString(&disp, &font5x7Info, (uint8_t *)"*", 0, 24, BM_NORMAL); + break; + case POT: + snprintf((char *)data, 8, "%03u", var[POT]); + DISP_writeString(&disp, &font5x7Info, data, 48, 32, BM_NORMAL); + DISP_writeString(&disp, &font5x7Info, (uint8_t *)"*", 0, 32, BM_NORMAL); + break; + case REF: + temp = (MAX_VOLT * var[REF] + 127) / UINT8_MAX; + snprintf((char *)data, 16, "%03u (%01d.%02d)", var[REF], temp / 100, temp % 100); + DISP_writeString(&disp, &font5x7Info, data, 48, 40, BM_NORMAL); + DISP_writeString(&disp, &font5x7Info, (uint8_t *)"*", 0, 40, BM_NORMAL); + break; + case OFFS: + snprintf((char *)data, 8, "%03u", var[OFFS]); + DISP_writeString(&disp, &font5x7Info, data, 48, 48, BM_NORMAL); + DISP_writeString(&disp, &font5x7Info, (uint8_t *)"*", 0, 48, BM_NORMAL); + break; + case ZERO: + snprintf((char *)data, 8, "%03u", var[ZERO]); + DISP_writeString(&disp, &font5x7Info, data, 48, 56, BM_NORMAL); + DISP_writeString(&disp, &font5x7Info, (uint8_t *)"*", 0, 56, BM_NORMAL); + break; + + default: + break; + } +} + +void pushedDispBtnEvent(ButtonKey_t *key) +{ + switch (key->instance) + { + case BTN_BOT_1: + option = (option - 1) & (OPT_MAX - 1); + break; + case BTN_BOT_2: + option = (option + 1) & (OPT_MAX - 1); + break; + default: + break; + } +} + +void changeValue(int8_t inc) +{ + inc = inc / 2; + switch (option) + { + case FREQ: + { + if ((var[FREQ] <= 1 && inc < 0) || (var[FREQ] >= 1000 && inc > 0)) + { + break; + } + var[FREQ] += inc; + + ad9833_setFrequency(&had9833, CHAN_0, var[FREQ]); + + break; + } + case WAVE: + { + if (inc > 0 && var[WAVE] == 2) + { + var[WAVE] = 0; + } + else if (inc < 0 && var[WAVE] == 0) + { + var[WAVE] = 2; + } + else + { + var[WAVE] += inc; + } + + switch (var[WAVE]) + { + case SIN: + ad9833_setMode(&had9833, MODE_SINE); + break; + case TRI: + ad9833_setMode(&had9833, MODE_TRIANGLE); + break; + case SQR: + ad9833_setMode(&had9833, MODE_SQUARE1); + break; + + default: + break; + } + + break; + } + case ONOFF: + { + var[ONOFF] ^= 1; + if (var[ONOFF]) + { + HAL_GPIO_WritePin(LED_CH1_GPIO_Port, LED_CH1_Pin, GPIO_PIN_RESET); + switch (var[WAVE]) + { + case SIN: + ad9833_setMode(&had9833, MODE_SINE); + break; + case TRI: + ad9833_setMode(&had9833, MODE_TRIANGLE); + break; + case SQR: + ad9833_setMode(&had9833, MODE_SQUARE1); + break; + + default: + break; + } + } + else + { + HAL_GPIO_WritePin(LED_CH1_GPIO_Port, LED_CH1_Pin, GPIO_PIN_SET); + ad9833_setMode(&had9833, MODE_OFF); + } + break; + } + case GAIN: + { + var[GAIN] ^= 1; + if (var[GAIN]) + { + HAL_GPIO_WritePin(GAIN1_GPIO_Port, GAIN1_Pin, GPIO_PIN_SET); + } + else + { + HAL_GPIO_WritePin(GAIN1_GPIO_Port, GAIN1_Pin, GPIO_PIN_RESET); + } + break; + } + case POT: + { + var[POT] = (var[POT] + inc) & UINT8_MAX; + mcp41x_setValue(&hmcp41, var[POT]); + break; + } + case REF: + { + var[REF] = (var[REF] + inc) & UINT8_MAX; + HAL_DAC_SetValue(&hdac1, DAC1_CHANNEL_1, DAC_ALIGN_8B_R, var[REF]); + break; + } + case OFFS: + { + var[OFFS] = (var[OFFS] + inc) & UINT8_MAX; + break; + } + case ZERO: + { + var[ZERO] = (var[ZERO] + inc) & UINT8_MAX; + break; + } + default: + break; + } +} + +void encoderHandler(void) +{ + static uint8_t cnt; + if (htim3.Instance->CNT == cnt || htim3.Instance->CNT % 2 == 1) + { + return; + } + + changeValue(htim3.Instance->CNT - cnt); + cnt = (uint8_t)htim3.Instance->CNT; +} diff --git a/app/core/app.h b/app/core/app.h new file mode 100644 index 0000000..76e65c4 --- /dev/null +++ b/app/core/app.h @@ -0,0 +1,4 @@ +#pragma once + +void setup(void); +void loop(void); diff --git a/app/core/bottom_button.c b/app/core/bottom_button.c new file mode 100644 index 0000000..2f12f23 --- /dev/null +++ b/app/core/bottom_button.c @@ -0,0 +1,40 @@ +#include "main.h" +#include "bottom_button.h" + +static ButtonKey_t bottom_buttons[BTN_BOT_MAX]; + +void bottomButtonInit(void) +{ + bottom_buttons[BTN_BOT_1].instance = BTN_BOT_1; + bottom_buttons[BTN_BOT_1].buttonPressed = pushedDispBtnEvent; + bottom_buttons[BTN_BOT_1].gpio_port = BTN1_GPIO_Port; + bottom_buttons[BTN_BOT_1].gpio_pin = BTN1_Pin; + bottom_buttons[BTN_BOT_1].pushed_state = GPIO_PIN_RESET; + + bottom_buttons[BTN_BOT_2].instance = BTN_BOT_2; + bottom_buttons[BTN_BOT_2].buttonPressed = pushedDispBtnEvent; + bottom_buttons[BTN_BOT_2].gpio_port = BTN2_GPIO_Port; + bottom_buttons[BTN_BOT_2].gpio_pin = BTN2_Pin; + bottom_buttons[BTN_BOT_2].pushed_state = GPIO_PIN_RESET; + + for (HW_BotBtnName_t btn_key = BTN_BOT_1; btn_key < BTN_BOT_MAX; btn_key++) + { + bottom_buttons[btn_key].state = IDLE; + bottom_buttons[btn_key].timer_debounce = BTN_DEFAULT_DEBOUNCE_MS; + bottom_buttons[btn_key].timer_long_pressed = BTN_DEFAULT_LONGPRESSED_MS; + bottom_buttons[btn_key].timer_repeat_delay = BTN_DEFAULT_REPEAT_MS; + } +} + +void bottomButtonsHandler(void) +{ + for (HW_BotBtnName_t btn_key = BTN_BOT_1; btn_key < BTN_BOT_MAX; btn_key++) + { + buttonHandler(&bottom_buttons[btn_key]); + } +} + +__weak void pushedDispBtnEvent(ButtonKey_t *key) +{ + UNUSED(key); +} \ No newline at end of file diff --git a/app/core/bottom_button.h b/app/core/bottom_button.h new file mode 100644 index 0000000..917b1ce --- /dev/null +++ b/app/core/bottom_button.h @@ -0,0 +1,14 @@ +#pragma once + +#include "hw_button.h" + +typedef enum +{ + BTN_BOT_1, + BTN_BOT_2, + BTN_BOT_MAX, +} HW_BotBtnName_t; + +void bottomButtonInit(void); +void bottomButtonsHandler(void); +void pushedDispBtnEvent(ButtonKey_t *key); diff --git a/fun_gen_amp_test.ioc b/fun_gen_amp_test.ioc index 442293a..6164091 100644 --- a/fun_gen_amp_test.ioc +++ b/fun_gen_amp_test.ioc @@ -67,7 +67,7 @@ PA0.GPIO_Label=BTN1 PA0.Locked=true PA0.Signal=GPIO_Input PA1.GPIOParameters=GPIO_Label -PA1.GPIO_Label=BTN1 +PA1.GPIO_Label=BTN2 PA1.Locked=true PA1.Signal=GPIO_Input PA10.GPIOParameters=GPIO_Label @@ -204,7 +204,7 @@ ProjectManager.StackSize=0x400 ProjectManager.TargetToolchain=Makefile ProjectManager.ToolChainLocation= ProjectManager.UnderRoot=false -ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-HAL-false,2-MX_GPIO_Init-GPIO-false-HAL-true,3-MX_DAC1_Init-DAC1-false-HAL-true,4-MX_SPI2_Init-SPI2-false-HAL-true,5-MX_SPI3_Init-SPI3-false-HAL-true,6-MX_USART2_UART_Init-USART2-false-HAL-true +ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-HAL-false,2-MX_GPIO_Init-GPIO-false-HAL-true,3-MX_DAC1_Init-DAC1-false-HAL-true,4-MX_SPI2_Init-SPI2-false-HAL-true,5-MX_SPI3_Init-SPI3-false-HAL-true,6-MX_USART2_UART_Init-USART2-false-HAL-true,7-MX_TIM3_Init-TIM3-false-HAL-true RCC.ADC12outputFreq_Value=48000000 RCC.ADC34outputFreq_Value=48000000 RCC.AHBFreq_Value=48000000 @@ -269,11 +269,13 @@ SPI2.Direction=SPI_DIRECTION_1LINE SPI2.IPParameters=VirtualType,Mode,Direction,CalculateBaudRate,BaudRatePrescaler SPI2.Mode=SPI_MODE_MASTER SPI2.VirtualType=VM_MASTER -SPI3.BaudRatePrescaler=SPI_BAUDRATEPRESCALER_2 -SPI3.CalculateBaudRate=12.0 MBits/s +SPI3.BaudRatePrescaler=SPI_BAUDRATEPRESCALER_32 +SPI3.CalculateBaudRate=750.0 KBits/s +SPI3.DataSize=SPI_DATASIZE_8BIT SPI3.Direction=SPI_DIRECTION_1LINE -SPI3.IPParameters=VirtualType,Mode,Direction,CalculateBaudRate,BaudRatePrescaler +SPI3.IPParameters=VirtualType,Mode,Direction,CalculateBaudRate,BaudRatePrescaler,DataSize,NSSPMode SPI3.Mode=SPI_MODE_MASTER +SPI3.NSSPMode=SPI_NSS_PULSE_ENABLE SPI3.VirtualType=VM_MASTER TIM3.IC1Filter=15 TIM3.IC2Filter=15