92 lines
2.6 KiB
C
92 lines
2.6 KiB
C
/* USER CODE BEGIN Header */
|
||
/**
|
||
******************************************************************************
|
||
* @file gpio.c
|
||
* @brief This file provides code for the configuration
|
||
* of all used GPIO pins.
|
||
******************************************************************************
|
||
* @attention
|
||
*
|
||
* Copyright (c) 2024 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 "gpio.h"
|
||
|
||
/* USER CODE BEGIN 0 */
|
||
|
||
/* USER CODE END 0 */
|
||
|
||
/*----------------------------------------------------------------------------*/
|
||
/* Configure GPIO */
|
||
/*----------------------------------------------------------------------------*/
|
||
/* USER CODE BEGIN 1 */
|
||
|
||
/* USER CODE END 1 */
|
||
|
||
/** Configure pins
|
||
PH0-OSC_IN (PH0) ------> RCC_OSC_IN
|
||
PH1-OSC_OUT (PH1) ------> RCC_OSC_OUT
|
||
*/
|
||
void MX_GPIO_Init(void)
|
||
{
|
||
|
||
GPIO_InitTypeDef GPIO_InitStruct = {0};
|
||
|
||
/* GPIO Ports Clock Enable */
|
||
__HAL_RCC_GPIOH_CLK_ENABLE();
|
||
__HAL_RCC_GPIOC_CLK_ENABLE();
|
||
__HAL_RCC_GPIOA_CLK_ENABLE();
|
||
__HAL_RCC_GPIOB_CLK_ENABLE();
|
||
|
||
/*Configure GPIO pin : PC1 */
|
||
GPIO_InitStruct.Pin = GPIO_PIN_1;
|
||
GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING;
|
||
GPIO_InitStruct.Pull = GPIO_NOPULL;
|
||
HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
|
||
|
||
/*Configure GPIO pin : PA4 */
|
||
GPIO_InitStruct.Pin = GPIO_PIN_4;
|
||
GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING;
|
||
GPIO_InitStruct.Pull = GPIO_NOPULL;
|
||
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
|
||
|
||
/* EXTI interrupt init*/
|
||
HAL_NVIC_SetPriority(EXTI1_IRQn, 0, 0);
|
||
HAL_NVIC_EnableIRQ(EXTI1_IRQn);
|
||
|
||
HAL_NVIC_SetPriority(EXTI4_IRQn, 0, 0);
|
||
HAL_NVIC_EnableIRQ(EXTI4_IRQn);
|
||
|
||
}
|
||
|
||
/* USER CODE BEGIN 2 */
|
||
volatile uint8_t captureFlag = 0;
|
||
extern uint32_t G_StartMillis;
|
||
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
|
||
{
|
||
if (GPIO_Pin == GPIO_PIN_1)
|
||
{
|
||
// <20>?查捕获标志,避免重复捕获
|
||
if (!captureFlag)
|
||
{
|
||
// 处理上升沿触发事<E58F91>?
|
||
G_StartMillis=0;
|
||
G_StartMillis = HAL_GetTick(); //获取当前系统时间
|
||
|
||
// 禁用对应的外部中断,防止再次触发
|
||
HAL_NVIC_DisableIRQ(EXTI2_IRQn);
|
||
captureFlag = 1; // 设置捕获标志为已捕获
|
||
}
|
||
}
|
||
}
|
||
/* USER CODE END 2 */
|