diff --git a/firmware/Core/Inc/inputs.h b/firmware/Core/Inc/inputs.h new file mode 100644 index 0000000..3d003cd --- /dev/null +++ b/firmware/Core/Inc/inputs.h @@ -0,0 +1,17 @@ +/* + * inputs.h + * + * Created on: Oct 29, 2022 + * Author: mcfly + */ + +#ifndef INC_INPUTS_H_ +#define INC_INPUTS_H_ + + +#include "stm32g0xx_hal.h" + +//Timers interrupts +void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim); + +#endif /* INC_INPUTS_H_ */ diff --git a/firmware/Core/Src/inputs.c b/firmware/Core/Src/inputs.c new file mode 100644 index 0000000..d5f4b5e --- /dev/null +++ b/firmware/Core/Src/inputs.c @@ -0,0 +1,53 @@ +/* + * inputs.c + * + * Created on: Oct 29, 2022 + * Author: mcfly + */ +#include "inputs.h" +#include "st7789.h" + +#define BTNPRT GPIOC +#define ENCBTNPRT BGIOB +#define ENCBTNPRTMASK 0b11001000 +#define SCRBTNPRT BGIOD +#define SCRBTNPRTMASK 0b1110000 + +void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) { + static uint16_t btnbuff = 0xFFFF; + static uint16_t btnprev = 0xFFFF; + uint8_t i; + uint16_t pin; + GPIO_TypeDef *port; + + //check if the interrupt comes from TIM6 + if(htim->Instance == TIM6) { + btnbuff = BTNPRT->IDR; + for (i=5; i>=2; i--) { + if ( !((btnbuff>>i) & 1) && ((btnprev>>i) & 1) ) { + switch (i) { + case 5: + port = CH1_EN_GPIO_Port; + pin = CH1_EN_Pin; + break; + case 4: + port = CH2_EN_GPIO_Port; + pin = CH2_EN_Pin; + break; + case 3: + port = PWM1_EN_GPIO_Port; + pin = PWM1_EN_Pin; + break; + case 2: + port = PWM2_EN_GPIO_Port; + pin = PWM2_EN_Pin; + break; + } + HAL_GPIO_TogglePin(port, pin); + } + } + btnprev = btnbuff; + } + +} + diff --git a/firmware/Core/Src/main.c b/firmware/Core/Src/main.c index d20e65f..223ded6 100644 --- a/firmware/Core/Src/main.c +++ b/firmware/Core/Src/main.c @@ -22,7 +22,7 @@ /* Private includes ----------------------------------------------------------*/ /* USER CODE BEGIN Includes */ #include "st7789.h" - +#include "inputs.h" /* USER CODE END Includes */ /* Private typedef -----------------------------------------------------------*/ @@ -110,6 +110,7 @@ int main(void) MX_USART3_UART_Init(); /* USER CODE BEGIN 2 */ ST7789_Init(); + HAL_TIM_Base_Start_IT(&htim6); /* USER CODE END 2 */ @@ -324,7 +325,7 @@ static void MX_TIM6_Init(void) htim6.Init.Prescaler = 64-1; htim6.Init.CounterMode = TIM_COUNTERMODE_UP; htim6.Init.Period = 10000; - htim6.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; + htim6.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE; if (HAL_TIM_Base_Init(&htim6) != HAL_OK) { Error_Handler(); diff --git a/firmware/Drivers/ST7789/st7789.c b/firmware/Drivers/ST7789/st7789.c index e24ecc8..7cf8aea 100644 --- a/firmware/Drivers/ST7789/st7789.c +++ b/firmware/Drivers/ST7789/st7789.c @@ -708,7 +708,7 @@ void ST7789_Test(void) ST7789_WriteString(10, 50, "Hello Steve!", Font_7x10, RED, WHITE); ST7789_WriteString(10, 75, "Hello Steve!", Font_11x18, YELLOW, WHITE); ST7789_WriteString(10, 100, "Hello Steve!", Font_16x26, MAGENTA, WHITE); - HAL_Delay(1000); + HAL_Delay(5000); ST7789_Fill_Color(RED); ST7789_WriteString(10, 10, "Rect./Line.", Font_11x18, YELLOW, BLACK); @@ -740,8 +740,4 @@ void ST7789_Test(void) ST7789_DrawFilledTriangle(30, 30, 30, 70, 60, 40, WHITE); HAL_Delay(1000); - // If FLASH cannot storage anymore datas, please delete codes below. - ST7789_Fill_Color(WHITE); - ST7789_DrawImage(0, 0, 128, 128, (uint16_t *)saber); - HAL_Delay(3000); } diff --git a/firmware/SigGen Debug.launch b/firmware/SigGen Debug.launch index d667ce0..3fdd33b 100644 --- a/firmware/SigGen Debug.launch +++ b/firmware/SigGen Debug.launch @@ -75,5 +75,6 @@ + diff --git a/firmware/SigGen.ioc b/firmware/SigGen.ioc index 79239ed..8afa864 100644 --- a/firmware/SigGen.ioc +++ b/firmware/SigGen.ioc @@ -380,7 +380,8 @@ TIM17.Channel=TIM_CHANNEL_1 TIM17.IPParameters=Channel TIM3.EncoderMode=TIM_ENCODERMODE_TI12 TIM3.IPParameters=EncoderMode -TIM6.IPParameters=Prescaler,Period +TIM6.AutoReloadPreload=TIM_AUTORELOAD_PRELOAD_ENABLE +TIM6.IPParameters=Prescaler,Period,AutoReloadPreload TIM6.Period=10000 TIM6.Prescaler=64-1 USART3.IPParameters=VirtualMode-Asynchronous