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