diff --git a/.idea/jakub.iml b/.idea/jakub.iml
index 4c94235..f08604b 100644
--- a/.idea/jakub.iml
+++ b/.idea/jakub.iml
@@ -1,2 +1,2 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/Core/Inc/main.h b/Core/Inc/main.h
index a3e264c..ae4578c 100644
--- a/Core/Inc/main.h
+++ b/Core/Inc/main.h
@@ -57,6 +57,9 @@ void Error_Handler(void);
/* USER CODE END EFP */
/* Private defines -----------------------------------------------------------*/
+#define PIN_Pin GPIO_PIN_1
+#define PIN_GPIO_Port GPIOA
+#define PIN_EXTI_IRQn EXTI1_IRQn
/* USER CODE BEGIN Private defines */
diff --git a/Core/Inc/stm32g4xx_it.h b/Core/Inc/stm32g4xx_it.h
index 389f3a0..39870db 100644
--- a/Core/Inc/stm32g4xx_it.h
+++ b/Core/Inc/stm32g4xx_it.h
@@ -55,6 +55,7 @@ void SVC_Handler(void);
void DebugMon_Handler(void);
void PendSV_Handler(void);
void SysTick_Handler(void);
+void EXTI1_IRQHandler(void);
void USB_LP_IRQHandler(void);
void TIM1_UP_TIM16_IRQHandler(void);
/* USER CODE BEGIN EFP */
diff --git a/Core/Src/main.c b/Core/Src/main.c
index 0795d95..9b6836e 100644
--- a/Core/Src/main.c
+++ b/Core/Src/main.c
@@ -66,11 +66,7 @@ int _write(int file, char *ptr, int len) {
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
- uint32_t current_count = EXT_TIMER.Instance->CNT;
- uint32_t difference = current_count-last_count;
- last_count = current_count;
- printf("%d\n", difference);
}
void USB_CDC_RxHandler(uint8_t* Buf, uint32_t Len)
@@ -85,6 +81,34 @@ void USB_CDC_RxHandler(uint8_t* Buf, uint32_t Len)
}
+uint32_t check_pin_state()
+{
+ return HAL_GPIO_ReadPin(PIN_GPIO_Port, PIN_Pin);
+}
+
+void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
+{
+ uint32_t current_count = EXT_TIMER.Instance->CNT;
+
+ if (check_pin_state() )
+ {
+// printf("RISING\n");
+ //Reset
+ last_count = current_count;
+
+ }
+ else
+ {
+// printf("FALLING\n");
+ //Send
+ uint32_t difference = current_count-last_count;
+
+
+ printf("%d\n", difference);
+ }
+
+}
+
void receive_handler();
/* USER CODE END PFP */
@@ -295,6 +319,7 @@ static void MX_TIM2_Init(void)
*/
static void MX_GPIO_Init(void)
{
+ GPIO_InitTypeDef GPIO_InitStruct = {0};
/* USER CODE BEGIN MX_GPIO_Init_1 */
/* USER CODE END MX_GPIO_Init_1 */
@@ -302,6 +327,16 @@ static void MX_GPIO_Init(void)
__HAL_RCC_GPIOF_CLK_ENABLE();
__HAL_RCC_GPIOA_CLK_ENABLE();
+ /*Configure GPIO pin : PIN_Pin */
+ GPIO_InitStruct.Pin = PIN_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING_FALLING;
+ GPIO_InitStruct.Pull = GPIO_PULLUP;
+ HAL_GPIO_Init(PIN_GPIO_Port, &GPIO_InitStruct);
+
+ /* EXTI interrupt init*/
+ HAL_NVIC_SetPriority(EXTI1_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(EXTI1_IRQn);
+
/* USER CODE BEGIN MX_GPIO_Init_2 */
/* USER CODE END MX_GPIO_Init_2 */
}
diff --git a/Core/Src/stm32g4xx_it.c b/Core/Src/stm32g4xx_it.c
index abf8a51..d11a1c8 100644
--- a/Core/Src/stm32g4xx_it.c
+++ b/Core/Src/stm32g4xx_it.c
@@ -199,6 +199,20 @@ void SysTick_Handler(void)
/* please refer to the startup file (startup_stm32g4xx.s). */
/******************************************************************************/
+/**
+ * @brief This function handles EXTI line1 interrupt.
+ */
+void EXTI1_IRQHandler(void)
+{
+ /* USER CODE BEGIN EXTI1_IRQn 0 */
+
+ /* USER CODE END EXTI1_IRQn 0 */
+ HAL_GPIO_EXTI_IRQHandler(PIN_Pin);
+ /* USER CODE BEGIN EXTI1_IRQn 1 */
+
+ /* USER CODE END EXTI1_IRQn 1 */
+}
+
/**
* @brief This function handles USB low priority interrupt remap.
*/
diff --git a/jakub.ioc b/jakub.ioc
index c7d7b48..eeee826 100644
--- a/jakub.ioc
+++ b/jakub.ioc
@@ -20,13 +20,14 @@ Mcu.Package=LQFP64
Mcu.Pin0=PF0-OSC_IN
Mcu.Pin1=PF1-OSC_OUT
Mcu.Pin2=PA0
-Mcu.Pin3=PA11
-Mcu.Pin4=PA12
-Mcu.Pin5=VP_SYS_VS_Systick
-Mcu.Pin6=VP_SYS_VS_DBSignals
-Mcu.Pin7=VP_TIM1_VS_ClockSourceINT
-Mcu.Pin8=VP_USB_DEVICE_VS_USB_DEVICE_CDC_FS
-Mcu.PinsNb=9
+Mcu.Pin3=PA1
+Mcu.Pin4=PA11
+Mcu.Pin5=PA12
+Mcu.Pin6=VP_SYS_VS_Systick
+Mcu.Pin7=VP_SYS_VS_DBSignals
+Mcu.Pin8=VP_TIM1_VS_ClockSourceINT
+Mcu.Pin9=VP_USB_DEVICE_VS_USB_DEVICE_CDC_FS
+Mcu.PinsNb=10
Mcu.ThirdPartyNb=0
Mcu.UserConstants=
Mcu.UserName=STM32G474RETx
@@ -34,6 +35,7 @@ MxCube.Version=6.9.1
MxDb.Version=DB.6.0.91
NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
+NVIC.EXTI1_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true
NVIC.ForceEnableDMAVector=true
NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
NVIC.MemoryManagement_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
@@ -47,6 +49,12 @@ NVIC.USB_LP_IRQn=true\:2\:0\:true\:false\:true\:false\:true\:true
NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
PA0.Locked=true
PA0.Signal=S_TIM2_ETR
+PA1.GPIOParameters=GPIO_PuPd,GPIO_Label,GPIO_ModeDefaultEXTI
+PA1.GPIO_Label=PIN
+PA1.GPIO_ModeDefaultEXTI=GPIO_MODE_IT_RISING_FALLING
+PA1.GPIO_PuPd=GPIO_PULLUP
+PA1.Locked=true
+PA1.Signal=GPXTI1
PA11.Mode=Device
PA11.Signal=USB_DM
PA12.Mode=Device
@@ -139,6 +147,8 @@ RCC.USART3Freq_Value=150000000
RCC.USBFreq_Value=48000000
RCC.VCOInputFreq_Value=12500000
RCC.VCOOutputFreq_Value=300000000
+SH.GPXTI1.0=GPIO_EXTI1
+SH.GPXTI1.ConfNb=1
SH.S_TIM2_ETR.0=TIM2_ETR,ClockSourceETR_Mode2
SH.S_TIM2_ETR.ConfNb=1
TIM1.ClockDivision=TIM_CLOCKDIVISION_DIV1