From 66cb2436c7ff0c4eff83768a02a83498a4c80fdb Mon Sep 17 00:00:00 2001 From: Dylan Smith Date: Wed, 14 Jan 2026 13:14:34 -0500 Subject: [PATCH] Add buttons --- Core/Inc/main.h | 10 +++ Core/Src/main.c | 16 ++++- ui-library-playground.ioc | 134 ++++++++++++++++++++------------------ 3 files changed, 94 insertions(+), 66 deletions(-) diff --git a/Core/Inc/main.h b/Core/Inc/main.h index 4ca0135..793b1bf 100644 --- a/Core/Inc/main.h +++ b/Core/Inc/main.h @@ -213,10 +213,20 @@ void Error_Handler(void); #define D2_GPIO_Port GPIOD #define D3_Pin GPIO_PIN_1 #define D3_GPIO_Port GPIOD +#define BUTTON1_Pin GPIO_PIN_2 +#define BUTTON1_GPIO_Port GPIOD #define G7_Pin GPIO_PIN_3 #define G7_GPIO_Port GPIOD +#define BUTTON2_Pin GPIO_PIN_4 +#define BUTTON2_GPIO_Port GPIOD +#define BUTTON3_Pin GPIO_PIN_5 +#define BUTTON3_GPIO_Port GPIOD #define B2_Pin GPIO_PIN_6 #define B2_GPIO_Port GPIOD +#define BUTTON4_Pin GPIO_PIN_7 +#define BUTTON4_GPIO_Port GPIOD +#define BUTTON5_Pin GPIO_PIN_9 +#define BUTTON5_GPIO_Port GPIOG #define G3_Pin GPIO_PIN_10 #define G3_GPIO_Port GPIOG #define B3_Pin GPIO_PIN_11 diff --git a/Core/Src/main.c b/Core/Src/main.c index 80497a1..04901a1 100644 --- a/Core/Src/main.c +++ b/Core/Src/main.c @@ -19,14 +19,12 @@ /* Includes ------------------------------------------------------------------*/ #include "main.h" #include "cmsis_os.h" -#include "graphics.h" -#include "stm32f4xx_hal_ltdc.h" -#include "stm32f4xx_hal_spi.h" #include "usb_host.h" /* Private includes ----------------------------------------------------------*/ /* USER CODE BEGIN Includes */ #include "display.h" +#include "graphics.h" #include "font.h" #include "menu.h" /* USER CODE END Includes */ @@ -892,6 +890,18 @@ static void MX_GPIO_Init(void) GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOD, &GPIO_InitStruct); + /*Configure GPIO pins : BUTTON1_Pin BUTTON2_Pin BUTTON3_Pin BUTTON4_Pin */ + GPIO_InitStruct.Pin = BUTTON1_Pin|BUTTON2_Pin|BUTTON3_Pin|BUTTON4_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_INPUT; + GPIO_InitStruct.Pull = GPIO_PULLUP; + HAL_GPIO_Init(GPIOD, &GPIO_InitStruct); + + /*Configure GPIO pin : BUTTON5_Pin */ + GPIO_InitStruct.Pin = BUTTON5_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_INPUT; + GPIO_InitStruct.Pull = GPIO_PULLUP; + HAL_GPIO_Init(BUTTON5_GPIO_Port, &GPIO_InitStruct); + /*Configure GPIO pins : LD3_Pin LD4_Pin */ GPIO_InitStruct.Pin = LD3_Pin|LD4_Pin; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; diff --git a/ui-library-playground.ioc b/ui-library-playground.ioc index a9daeb9..148a99d 100644 --- a/ui-library-playground.ioc +++ b/ui-library-playground.ioc @@ -28,6 +28,7 @@ FREERTOS.configUSE_IDLE_HOOK=1 FREERTOS.configUSE_MALLOC_FAILED_HOOK=1 FREERTOS.configUSE_RECURSIVE_MUTEXES=1 File.Version=6 +GPIO.groupedBy=Group By Peripherals KeepUserPlacement=false LTDC.ActiveH=320 LTDC.ActiveW=240 @@ -53,8 +54,6 @@ Mcu.IP0=CRC Mcu.IP1=DMA2D Mcu.IP10=TIM1 Mcu.IP11=USART1 -Mcu.IP12=USB_HOST -Mcu.IP13=USB_OTG_HS Mcu.IP2=FMC Mcu.IP3=FREERTOS Mcu.IP4=I2C3 @@ -63,12 +62,14 @@ Mcu.IP6=NVIC Mcu.IP7=RCC Mcu.IP8=SPI5 Mcu.IP9=SYS -Mcu.IPNb=14 +Mcu.IPNb=12 Mcu.Name=STM32F429ZITx Mcu.Package=LQFP144 Mcu.Pin0=PC14/OSC32_IN Mcu.Pin1=PC15/OSC32_OUT Mcu.Pin10=PF9 +Mcu.Pin100=VP_SYS_VS_tim6 +Mcu.Pin101=VP_TIM1_VS_ClockSourceINT Mcu.Pin11=PF10 Mcu.Pin12=PH0/OSC_IN Mcu.Pin13=PH1/OSC_OUT @@ -142,29 +143,31 @@ Mcu.Pin74=PA15 Mcu.Pin75=PC10 Mcu.Pin76=PD0 Mcu.Pin77=PD1 -Mcu.Pin78=PD3 -Mcu.Pin79=PD6 +Mcu.Pin78=PD2 +Mcu.Pin79=PD3 Mcu.Pin8=PF7 -Mcu.Pin80=PG10 -Mcu.Pin81=PG11 -Mcu.Pin82=PG12 -Mcu.Pin83=PG13 -Mcu.Pin84=PG14 -Mcu.Pin85=PG15 -Mcu.Pin86=PB5 -Mcu.Pin87=PB6 -Mcu.Pin88=PB8 -Mcu.Pin89=PB9 +Mcu.Pin80=PD4 +Mcu.Pin81=PD5 +Mcu.Pin82=PD6 +Mcu.Pin83=PD7 +Mcu.Pin84=PG9 +Mcu.Pin85=PG10 +Mcu.Pin86=PG11 +Mcu.Pin87=PG12 +Mcu.Pin88=PG13 +Mcu.Pin89=PG14 Mcu.Pin9=PF8 -Mcu.Pin90=PE0 -Mcu.Pin91=PE1 -Mcu.Pin92=VP_CRC_VS_CRC -Mcu.Pin93=VP_DMA2D_VS_DMA2D -Mcu.Pin94=VP_FREERTOS_VS_CMSIS_V1 -Mcu.Pin95=VP_SYS_VS_tim6 -Mcu.Pin96=VP_TIM1_VS_ClockSourceINT -Mcu.Pin97=VP_USB_HOST_VS_USB_HOST_CDC_HS -Mcu.PinsNb=98 +Mcu.Pin90=PG15 +Mcu.Pin91=PB5 +Mcu.Pin92=PB6 +Mcu.Pin93=PB8 +Mcu.Pin94=PB9 +Mcu.Pin95=PE0 +Mcu.Pin96=PE1 +Mcu.Pin97=VP_CRC_VS_CRC +Mcu.Pin98=VP_DMA2D_VS_DMA2D +Mcu.Pin99=VP_FREERTOS_VS_CMSIS_V1 +Mcu.PinsNb=102 Mcu.ThirdPartyNb=0 Mcu.UserConstants= Mcu.UserName=STM32F429ZITx @@ -178,7 +181,6 @@ NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false\:false NVIC.LTDC_IRQn=true\:5\:0\:true\:false\:true\:true\:true\:true\:true NVIC.MemoryManagement_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false\:false NVIC.NonMaskableInt_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false\:false -NVIC.OTG_HS_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true\:true NVIC.PendSV_IRQn=true\:15\:0\:false\:false\:false\:true\:false\:false\:false NVIC.PriorityGroup=NVIC_PRIORITYGROUP_4 NVIC.SVCall_IRQn=true\:0\:0\:false\:false\:false\:false\:false\:false\:false @@ -334,7 +336,6 @@ PB13.GPIO_Label=VBUS_HS PB13.GPIO_Mode=GPIO_MODE_INPUT PB13.GPIO_PuPd=GPIO_NOPULL PB13.Locked=true -PB13.Mode=Activate_VBUS_FS PB13.Signal=USB_OTG_HS_VBUS PB14.GPIOParameters=GPIO_Speed,GPIO_PuPd,GPIO_Label,GPIO_Mode PB14.GPIO_Label=OTG_HS_DM @@ -342,7 +343,6 @@ PB14.GPIO_Mode=GPIO_MODE_AF_PP PB14.GPIO_PuPd=GPIO_NOPULL PB14.GPIO_Speed=GPIO_SPEED_FREQ_LOW PB14.Locked=true -PB14.Mode=Host_FS PB14.Signal=USB_OTG_HS_DM PB15.GPIOParameters=GPIO_Speed,GPIO_PuPd,GPIO_Label,GPIO_Mode PB15.GPIO_Label=OTG_HS_DP @@ -350,7 +350,6 @@ PB15.GPIO_Mode=GPIO_MODE_AF_PP PB15.GPIO_PuPd=GPIO_NOPULL PB15.GPIO_Speed=GPIO_SPEED_FREQ_LOW PB15.Locked=true -PB15.Mode=Host_FS PB15.Signal=USB_OTG_HS_DP PB2/BOOT1.GPIOParameters=GPIO_PuPd,GPIO_Label,GPIO_Mode PB2/BOOT1.GPIO_Label=BOOT1 @@ -518,6 +517,11 @@ PD15.GPIO_PuPd=GPIO_NOPULL PD15.GPIO_Speed=GPIO_SPEED_FREQ_VERY_HIGH PD15.Locked=true PD15.Signal=FMC_D1_DA1 +PD2.GPIOParameters=GPIO_PuPd,GPIO_Label +PD2.GPIO_Label=BUTTON1 +PD2.GPIO_PuPd=GPIO_PULLUP +PD2.Locked=true +PD2.Signal=GPIO_Input PD3.GPIOParameters=GPIO_Speed,GPIO_PuPd,GPIO_Label,GPIO_Mode PD3.GPIO_Label=G7 PD3.GPIO_Mode=GPIO_MODE_AF_PP @@ -526,6 +530,16 @@ PD3.GPIO_Speed=GPIO_SPEED_FREQ_LOW PD3.Locked=true PD3.Mode=RGB565 PD3.Signal=LTDC_G7 +PD4.GPIOParameters=GPIO_PuPd,GPIO_Label +PD4.GPIO_Label=BUTTON2 +PD4.GPIO_PuPd=GPIO_PULLUP +PD4.Locked=true +PD4.Signal=GPIO_Input +PD5.GPIOParameters=GPIO_PuPd,GPIO_Label +PD5.GPIO_Label=BUTTON3 +PD5.GPIO_PuPd=GPIO_PULLUP +PD5.Locked=true +PD5.Signal=GPIO_Input PD6.GPIOParameters=GPIO_Speed,GPIO_PuPd,GPIO_Label,GPIO_Mode PD6.GPIO_Label=B2 PD6.GPIO_Mode=GPIO_MODE_AF_PP @@ -533,6 +547,11 @@ PD6.GPIO_PuPd=GPIO_NOPULL PD6.GPIO_Speed=GPIO_SPEED_FREQ_LOW PD6.Locked=true PD6.Signal=LTDC_B2 +PD7.GPIOParameters=GPIO_PuPd,GPIO_Label +PD7.GPIO_Label=BUTTON4 +PD7.GPIO_PuPd=GPIO_PULLUP +PD7.Locked=true +PD7.Signal=GPIO_Input PD8.GPIOParameters=GPIO_Speed,GPIO_PuPd,GPIO_Label,GPIO_Mode PD8.GPIO_Label=D13 PD8.GPIO_Mode=GPIO_MODE_AF_PP @@ -829,6 +848,11 @@ PG8.GPIO_PuPd=GPIO_NOPULL PG8.GPIO_Speed=GPIO_SPEED_FREQ_VERY_HIGH PG8.Locked=true PG8.Signal=FMC_SDCLK +PG9.GPIOParameters=GPIO_PuPd,GPIO_Label +PG9.GPIO_Label=BUTTON5 +PG9.GPIO_PuPd=GPIO_PULLUP +PG9.Locked=true +PG9.Signal=GPIO_Input PH0/OSC_IN.GPIOParameters=GPIO_Label PH0/OSC_IN.GPIO_Label=PH0-OSC_IN PH0/OSC_IN.Locked=true @@ -872,41 +896,43 @@ ProjectManager.UAScriptBeforePath= ProjectManager.UnderRoot=false ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-HAL-false,2-MX_GPIO_Init-GPIO-false-HAL-true,3-MX_CRC_Init-CRC-false-HAL-true,4-MX_DMA2D_Init-DMA2D-false-HAL-true,5-MX_FMC_Init-FMC-false-HAL-true,6-MX_I2C3_Init-I2C3-false-HAL-true,7-MX_LTDC_Init-LTDC-false-HAL-true,8-MX_SPI5_Init-SPI5-false-HAL-true,9-MX_TIM1_Init-TIM1-false-HAL-true,10-MX_USART1_UART_Init-USART1-false-HAL-true,11-MX_USB_HOST_Init-USB_HOST-false-HAL-false RCC.48MHZClocksFreq_Value=48000000 -RCC.AHBFreq_Value=72000000 +RCC.AHBCLKDivider=RCC_SYSCLK_DIV4 +RCC.AHBFreq_Value=30000000 RCC.APB1CLKDivider=RCC_HCLK_DIV2 -RCC.APB1Freq_Value=36000000 -RCC.APB1TimFreq_Value=72000000 -RCC.APB2Freq_Value=72000000 -RCC.APB2TimFreq_Value=72000000 -RCC.CortexFreq_Value=72000000 -RCC.EthernetFreq_Value=72000000 -RCC.FCLKCortexFreq_Value=72000000 +RCC.APB1Freq_Value=15000000 +RCC.APB1TimFreq_Value=30000000 +RCC.APB2Freq_Value=30000000 +RCC.APB2TimFreq_Value=30000000 +RCC.CortexFreq_Value=30000000 +RCC.EthernetFreq_Value=30000000 +RCC.FCLKCortexFreq_Value=30000000 RCC.FamilyName=M -RCC.HCLKFreq_Value=72000000 +RCC.HCLKFreq_Value=30000000 RCC.HSE_VALUE=8000000 RCC.HSI_VALUE=16000000 RCC.I2SClocksFreq_Value=192000000 -RCC.IPParameters=48MHZClocksFreq_Value,AHBFreq_Value,APB1CLKDivider,APB1Freq_Value,APB1TimFreq_Value,APB2Freq_Value,APB2TimFreq_Value,CortexFreq_Value,EthernetFreq_Value,FCLKCortexFreq_Value,FamilyName,HCLKFreq_Value,HSE_VALUE,HSI_VALUE,I2SClocksFreq_Value,LCDTFTFreq_Value,LSE_VALUE,LSI_VALUE,MCO2PinFreq_Value,PLLCLKFreq_Value,PLLN,PLLQ,PLLQCLKFreq_Value,PLLSAIDivR,PLLSAIN,PLLSAIR,RTCFreq_Value,RTCHSEDivFreq_Value,SAI_AClocksFreq_Value,SAI_BClocksFreq_Value,SYSCLKFreq_VALUE,SYSCLKSource,VCOI2SOutputFreq_Value,VCOInputFreq_Value,VCOOutputFreq_Value,VCOSAIOutputFreq_Value,VCOSAIOutputFreq_ValueQ,VCOSAIOutputFreq_ValueR,VcooutputI2S,VcooutputI2SQ +RCC.IPParameters=48MHZClocksFreq_Value,AHBCLKDivider,AHBFreq_Value,APB1CLKDivider,APB1Freq_Value,APB1TimFreq_Value,APB2Freq_Value,APB2TimFreq_Value,CortexFreq_Value,EthernetFreq_Value,FCLKCortexFreq_Value,FamilyName,HCLKFreq_Value,HSE_VALUE,HSI_VALUE,I2SClocksFreq_Value,LCDTFTFreq_Value,LSE_VALUE,LSI_VALUE,MCO2PinFreq_Value,PLLCLKFreq_Value,PLLN,PLLQ,PLLQCLKFreq_Value,PLLSAIDivR,PLLSAIN,PLLSAIR,PLLSourceVirtual,RTCFreq_Value,RTCHSEDivFreq_Value,SAI_AClocksFreq_Value,SAI_BClocksFreq_Value,SYSCLKFreq_VALUE,SYSCLKSource,VCOI2SOutputFreq_Value,VCOInputFreq_Value,VCOOutputFreq_Value,VCOSAIOutputFreq_Value,VCOSAIOutputFreq_ValueQ,VCOSAIOutputFreq_ValueR,VcooutputI2S,VcooutputI2SQ RCC.LCDTFTFreq_Value=6000000 RCC.LSE_VALUE=32768 RCC.LSI_VALUE=32000 -RCC.MCO2PinFreq_Value=72000000 -RCC.PLLCLKFreq_Value=72000000 -RCC.PLLN=72 -RCC.PLLQ=3 +RCC.MCO2PinFreq_Value=120000000 +RCC.PLLCLKFreq_Value=120000000 +RCC.PLLN=120 +RCC.PLLQ=5 RCC.PLLQCLKFreq_Value=48000000 RCC.PLLSAIDivR=RCC_PLLSAIDIVR_16 RCC.PLLSAIN=192 RCC.PLLSAIR=4 +RCC.PLLSourceVirtual=RCC_PLLSOURCE_HSE RCC.RTCFreq_Value=32000 RCC.RTCHSEDivFreq_Value=4000000 RCC.SAI_AClocksFreq_Value=96000000 RCC.SAI_BClocksFreq_Value=96000000 -RCC.SYSCLKFreq_VALUE=72000000 +RCC.SYSCLKFreq_VALUE=120000000 RCC.SYSCLKSource=RCC_SYSCLKSOURCE_PLLCLK RCC.VCOI2SOutputFreq_Value=384000000 RCC.VCOInputFreq_Value=2000000 -RCC.VCOOutputFreq_Value=144000000 +RCC.VCOOutputFreq_Value=240000000 RCC.VCOSAIOutputFreq_Value=384000000 RCC.VCOSAIOutputFreq_ValueQ=96000000 RCC.VCOSAIOutputFreq_ValueR=96000000 @@ -995,29 +1021,13 @@ SH.GPXTI2.ConfNb=1 SH.GPXTI5.0=GPIO_EXTI5 SH.GPXTI5.ConfNb=1 SPI5.BaudRatePrescaler=SPI_BAUDRATEPRESCALER_16 -SPI5.CalculateBaudRate=4.5 MBits/s +SPI5.CalculateBaudRate=1.875 MBits/s SPI5.Direction=SPI_DIRECTION_2LINES SPI5.IPParameters=Mode,CalculateBaudRate,VirtualType,Direction,BaudRatePrescaler SPI5.Mode=SPI_MODE_MASTER SPI5.VirtualType=VM_MASTER USART1.IPParameters=VirtualMode USART1.VirtualMode=VM_ASYNC -USB_HOST.BSP.number=1 -USB_HOST.IPParameters=VirtualModeHS,USBH_HandleTypeDef-CDC_HS -USB_HOST.USBH_HandleTypeDef-CDC_HS=hUsbHostHS -USB_HOST.VirtualModeHS=Cdc -USB_HOST0.BSP.STBoard=false -USB_HOST0.BSP.api=UnknownBspDriver -USB_HOST0.BSP.component= -USB_HOST0.BSP.condition= -USB_HOST0.BSP.instance=PC4 -USB_HOST0.BSP.ip=GPIO -USB_HOST0.BSP.mode=Output -USB_HOST0.BSP.name=Drive_VBUS_HS -USB_HOST0.BSP.semaphore= -USB_HOST0.BSP.solution=PC4 -USB_OTG_HS.IPParameters=VirtualMode-Host_FS -USB_OTG_HS.VirtualMode-Host_FS=Host_FS VP_CRC_VS_CRC.Mode=CRC_Activate VP_CRC_VS_CRC.Signal=CRC_VS_CRC VP_DMA2D_VS_DMA2D.Mode=DMA2D_Activate @@ -1028,8 +1038,6 @@ VP_SYS_VS_tim6.Mode=TIM6 VP_SYS_VS_tim6.Signal=SYS_VS_tim6 VP_TIM1_VS_ClockSourceINT.Mode=Internal VP_TIM1_VS_ClockSourceINT.Signal=TIM1_VS_ClockSourceINT -VP_USB_HOST_VS_USB_HOST_CDC_HS.Mode=CDC_HS -VP_USB_HOST_VS_USB_HOST_CDC_HS.Signal=USB_HOST_VS_USB_HOST_CDC_HS board=STM32F429I-DISC1 boardIOC=true rtos.0.ip=FREERTOS