2026-03-20 21:16:58 +08:00
|
|
|
|
#include "../main/SystemInclude.h"
|
2026-03-20 21:19:53 +08:00
|
|
|
|
|
2026-03-20 21:16:58 +08:00
|
|
|
|
/**------------------------------------------------------------------------
|
2026-03-20 21:19:53 +08:00
|
|
|
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD> GPIO <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>ⲿ<EFBFBD>ж<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
* @param EXTI_GPIOx: GPIO <EFBFBD>˿<EFBFBD> (pGPIO0/pGPIO1/pGPIO2)
|
|
|
|
|
|
* @param EXTI_PINx: GPIO <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>룬<EFBFBD><EFBFBD> GPIO_PIN_3
|
|
|
|
|
|
* @param EXTI_LINEx: EXTI <EFBFBD>ߺţ<EFBFBD><EFBFBD><EFBFBD> EXTI_LINE_3
|
|
|
|
|
|
* @param EXTI_IRQx: <EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD> IRQ <EFBFBD>ţ<EFBFBD><EFBFBD><EFBFBD> EXTI2_3_IRQn
|
|
|
|
|
|
* @note <EFBFBD>ú<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD>ʩ<EFBFBD><EFBFBD><EFBFBD>ش<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD> EXTI <EFBFBD>ߣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ش<EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ؿ<EFBFBD><EFBFBD>Ĵ<EFBFBD><EFBFBD>룩<EFBFBD><EFBFBD>
|
|
|
|
|
|
* ע<EFBFBD>⣺<EFBFBD>жϵ<EFBFBD> NVIC ʹ<EFBFBD>ܺ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ⲿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD>͡<EFBFBD>
|
|
|
|
|
|
* @example
|
|
|
|
|
|
* GPIO_EXTI_Init(pGPIO0, GPIO_PIN_3, EXTI_LINE_3, EXTI2_3_IRQn);
|
2026-03-20 21:16:58 +08:00
|
|
|
|
**/
|
|
|
|
|
|
void GPIO_EXTI_Init(GPIO_TypeDef* EXTI_GPIOx ,uint16_t EXTI_PINx ,EXTI_LINE_t EXTI_LINEx,IRQn_Type EXTI_IRQx)
|
|
|
|
|
|
{
|
|
|
|
|
|
GPIO_InitTypeDef GPIO_InitStructure;// GPIO<49><4F><EFBFBD>ýṹ<C3BD><E1B9B9>
|
|
|
|
|
|
EXTI_InitTypeDef EXTI_InitStructure;// EXTI<54><49><EFBFBD>ýṹ<C3BD><E1B9B9>
|
|
|
|
|
|
/* 1. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ų<EFBFBD><C5B2><EFBFBD> */
|
|
|
|
|
|
GPIO_InitStructure.Pin = EXTI_PINx; // Pinx
|
|
|
|
|
|
GPIO_InitStructure.Mode = GPIO_MODE_INPUT; // <20><><EFBFBD><EFBFBD>ģʽ
|
|
|
|
|
|
// GPIO_InitStructure.Pull = GPIO_NOPULL; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> GPIO_NOPULL
|
|
|
|
|
|
GPIO_InitStructure.Pull = GPIO_PULLUP;
|
|
|
|
|
|
GPIO_InitStructure.SchmittTrigger = ENABLE; // <20><><EFBFBD><EFBFBD>ʩ<EFBFBD><CAA9><EFBFBD>ش<EFBFBD><D8B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
GPIO_InitStructure.Alternate = GPIOx_AF_GPIO;
|
|
|
|
|
|
LHL_GPIO_Init(EXTI_GPIOx, &GPIO_InitStructure); // <20><>ʼ<EFBFBD><CABC>PinΪ<6E><CEAA><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
LHL_GPIO_SetEXTILine(EXTI_GPIOx, EXTI_PINx); // <20><><EFBFBD><EFBFBD>PinΪEXTI0
|
|
|
|
|
|
|
|
|
|
|
|
/* 2. <20><><EFBFBD><EFBFBD>EXTI<54><49><EFBFBD><EFBFBD> */
|
|
|
|
|
|
EXTI_InitStructure.Line = EXTI_LINEx;
|
|
|
|
|
|
EXTI_InitStructure.Mode = EXTI_MODE_INTERRUPT; // EXTI<54>ж<EFBFBD>ģʽ
|
2026-03-20 21:19:53 +08:00
|
|
|
|
EXTI_InitStructure.Trigger = EXTI_TRIGGER_RISING; // <20><><EFBFBD><EFBFBD><EFBFBD>½<EFBFBD><C2BD>ش<EFBFBD><D8B4><EFBFBD> EXTI_TRIGGER_RISING EXTI_TRIGGER_FALLING EXTI_TRIGGER_RISING_FALLING
|
2026-03-20 21:16:58 +08:00
|
|
|
|
EXTI_InitStructure.LineCmd = ENABLE; // ʹ<><CAB9>EXTI
|
|
|
|
|
|
LHL_EXTI_Init(&EXTI_InitStructure); // <20><><EFBFBD><EFBFBD>EXTI
|
|
|
|
|
|
|
2026-03-20 21:19:53 +08:00
|
|
|
|
// NVIC_EnableIRQ(EXTI_IRQx); // <20><><EFBFBD><EFBFBD>NVIC<49>ж<EFBFBD>
|
|
|
|
|
|
// NVIC_SetPriority(EXTI_IRQx, 0); // <20><><EFBFBD><EFBFBD>EXIT<49><54><EFBFBD>ȼ<EFBFBD>
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**------------------------------------------------------------------------
|
|
|
|
|
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD> LPTIM <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD>Ϊ EXTI <EFBFBD>ж<EFBFBD>Դ
|
|
|
|
|
|
* @param lptimer: LPTIM1 <EFBFBD><EFBFBD> LPTIM2
|
|
|
|
|
|
* @note LPTIM1 <EFBFBD><EFBFBD>Ӧ EXTI_LINE_10<EFBFBD><EFBFBD>LPTIM2 <EFBFBD><EFBFBD>Ӧ EXTI_LINE_11<EFBFBD><EFBFBD>
|
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ش<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>ģʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڽ<EFBFBD> LPTIM <EFBFBD>¼<EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD>
|
|
|
|
|
|
* @example LPTIM_EXTI_Init(LPTIM2);
|
|
|
|
|
|
**/
|
|
|
|
|
|
void LPTIM_EXTI_Init(LPTIM_TypeDef *lptimer)
|
|
|
|
|
|
{
|
|
|
|
|
|
EXTI_InitTypeDef EXTI_InitStructure;
|
|
|
|
|
|
|
|
|
|
|
|
if(lptimer == pLPTIM1) EXTI_InitStructure.Line = EXTI_LINE_10;
|
|
|
|
|
|
else EXTI_InitStructure.Line = EXTI_LINE_11;
|
|
|
|
|
|
EXTI_InitStructure.Mode = EXTI_MODE_INTERRUPT;
|
|
|
|
|
|
EXTI_InitStructure.Trigger = EXTI_TRIGGER_RISING;
|
|
|
|
|
|
EXTI_InitStructure.LineCmd = ENABLE;
|
|
|
|
|
|
LHL_EXTI_Init(&EXTI_InitStructure);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**------------------------------------------------------------------------
|
|
|
|
|
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD> ADC <EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<EFBFBD><EFBFBD><EFBFBD>ݾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ EXTI <EFBFBD>ж<EFBFBD>Դ
|
|
|
|
|
|
* @note ADC0 <EFBFBD><EFBFBD> ADC1 <EFBFBD>Ĺ<EFBFBD><EFBFBD><EFBFBD> EXTI_LINE_12<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ش<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>ģʽ<EFBFBD><EFBFBD>
|
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ADC ת<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϡ<EFBFBD>
|
|
|
|
|
|
* @example ADC_EXTI_Init();
|
|
|
|
|
|
**/
|
|
|
|
|
|
void ADC_EXTI_Init(void)
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
EXTI_InitTypeDef EXTI_InitStructure;
|
|
|
|
|
|
|
|
|
|
|
|
EXTI_InitStructure.Line = EXTI_LINE_12;
|
|
|
|
|
|
EXTI_InitStructure.Mode = EXTI_MODE_INTERRUPT; // EXTI_MODE_EVENT
|
|
|
|
|
|
EXTI_InitStructure.Trigger = EXTI_TRIGGER_RISING;
|
|
|
|
|
|
EXTI_InitStructure.LineCmd = ENABLE;
|
|
|
|
|
|
LHL_EXTI_Init(&EXTI_InitStructure);
|
2026-03-20 21:16:58 +08:00
|
|
|
|
}
|
2026-03-20 21:19:53 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* (PVD<56><44>RTC<54><43>DMA <20><> EXTI <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɸ<EFBFBD><C9B8><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5>) */
|
|
|
|
|
|
// EXTI_LINE_8 = 0x0100u, /*!< External interrupt line 8 PVD<56><44><EFBFBD><EFBFBD>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD>ǣ<EFBFBD><C7A3><EFBFBD><EFBFBD><EFBFBD> */
|
|
|
|
|
|
// EXTI_LINE_9 = 0x0200u, /*!< External interrupt line 9 RTC<54><43><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD> */
|
|
|
|
|
|
// EXTI_LINE_13 = 0x2000u, /*!< External interrupt line 13 DMA<4D><41><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD>жϵĻ<CFB5> */
|
|
|
|
|
|
|
|
|
|
|
|
//(void)PVD_EXTI_Init(void)
|
|
|
|
|
|
//(void)RTC_EXTI_Init(void)
|
|
|
|
|
|
//(void)DMA_EXTI_Init(void)
|
|
|
|
|
|
|
|
|
|
|
|
|
2026-03-20 21:16:58 +08:00
|
|
|
|
|
|
|
|
|
|
/*-=====================================================================================================
|
2026-03-20 21:19:53 +08:00
|
|
|
|
//<2F>ⲿ<EFBFBD>жϻص<CFBB>
|
2026-03-20 21:16:58 +08:00
|
|
|
|
-=====================================================================================================*/
|
2026-03-20 21:19:53 +08:00
|
|
|
|
|
2026-03-20 21:19:04 +08:00
|
|
|
|
static exti_irq_callback_t exti_callbacks[EXTI_MAX_LINES] = {NULL};
|
2026-03-20 21:19:53 +08:00
|
|
|
|
|
|
|
|
|
|
/**------------------------------------------------------------------------
|
|
|
|
|
|
* @brief ע<EFBFBD><EFBFBD> EXTI <EFBFBD>ж<EFBFBD><EFBFBD>ߵĻص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
* @param exti_linex: EXTI <EFBFBD>ߺţ<EFBFBD><EFBFBD><EFBFBD> EXTI_LINE_3
|
|
|
|
|
|
* @param exti_irq_callback: <EFBFBD>û<EFBFBD><EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD>루<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD>
|
|
|
|
|
|
* @note ͬһ EXTI <EFBFBD><EFBFBD>ֻ<EFBFBD><EFBFBD>ע<EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ظ<EFBFBD>ע<EFBFBD>Ὣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԡ<EFBFBD>
|
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߺ<EFBFBD><EFBFBD>Զ<EFBFBD>ʹ<EFBFBD>ܶ<EFBFBD>Ӧ<EFBFBD><EFBFBD> NVIC <EFBFBD>жϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>룩 <EFBFBD><EFBFBD>
|
|
|
|
|
|
* @example
|
|
|
|
|
|
* void my_exti_callback(void) { ... }
|
|
|
|
|
|
* Exti_register_irq_callback(EXTI_LINE_3, my_exti_callback);
|
|
|
|
|
|
**/
|
2026-03-20 21:16:58 +08:00
|
|
|
|
void Exti_register_irq_callback(EXTI_LINE_t exti_linex, exti_irq_callback_t exti_irq_callback)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (exti_linex == 0) return;//<2F><>ֹ<EFBFBD><D6B9>0 <20><><EFBFBD>߲<EFBFBD><DFB2><EFBFBD>EXTI_LINE_t<5F>IJ<EFBFBD><C4B2><EFBFBD>
|
|
|
|
|
|
uint8_t index = (uint8_t)__builtin_ctz((unsigned int)exti_linex); //<2F><>ȡexti_linex <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2026-03-20 21:19:53 +08:00
|
|
|
|
if(index >= EXTI_MAX_LINES) return;
|
|
|
|
|
|
if(exti_callbacks[index] != NULL) return;
|
|
|
|
|
|
|
|
|
|
|
|
exti_callbacks[index] = exti_irq_callback;
|
|
|
|
|
|
|
|
|
|
|
|
switch (index) { //<2F><>ȡ EXTI <20>߶<EFBFBD>Ӧ<EFBFBD><D3A6> IRQ <20><>
|
2026-03-20 21:16:58 +08:00
|
|
|
|
case 0:
|
|
|
|
|
|
case 1:
|
2026-03-20 21:19:53 +08:00
|
|
|
|
NVIC_EnableIRQ(EXTI0_1_IRQn); NVIC_SetPriority(EXTI0_1_IRQn,0);
|
|
|
|
|
|
|
2026-03-20 21:16:58 +08:00
|
|
|
|
break;
|
|
|
|
|
|
case 2:
|
|
|
|
|
|
case 3:
|
2026-03-20 21:19:53 +08:00
|
|
|
|
NVIC_EnableIRQ(EXTI2_3_IRQn); NVIC_SetPriority(EXTI2_3_IRQn,0);
|
2026-03-20 21:16:58 +08:00
|
|
|
|
break;
|
|
|
|
|
|
case 4:
|
|
|
|
|
|
case 5:
|
|
|
|
|
|
case 6:
|
|
|
|
|
|
case 7:
|
2026-03-20 21:19:53 +08:00
|
|
|
|
NVIC_EnableIRQ(EXTI4_7_IRQn); NVIC_SetPriority(EXTI4_7_IRQn,0);
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
|
|
case 10:
|
|
|
|
|
|
case 11:
|
|
|
|
|
|
NVIC_EnableIRQ(EXTI10_11_IRQn); NVIC_SetPriority(EXTI10_11_IRQn,0);
|
2026-03-20 21:16:58 +08:00
|
|
|
|
break;
|
2026-03-20 21:19:53 +08:00
|
|
|
|
|
|
|
|
|
|
case 12:
|
|
|
|
|
|
case 13:
|
|
|
|
|
|
NVIC_EnableIRQ(EXTI12_13_IRQn); NVIC_SetPriority(EXTI12_13_IRQn,0);
|
|
|
|
|
|
break;
|
2026-03-20 21:16:58 +08:00
|
|
|
|
default:
|
2026-03-20 21:19:53 +08:00
|
|
|
|
// <20><>֧<EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD> <20><><EFBFBD><EFBFBD> 8 9
|
2026-03-20 21:16:58 +08:00
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2026-03-20 21:19:53 +08:00
|
|
|
|
/**------------------------------------------------------------------------
|
|
|
|
|
|
* @brief EXTI0 <EFBFBD><EFBFBD> EXTI1 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
* @note <EFBFBD>ֱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> EXTI0 <EFBFBD><EFBFBD> EXTI1 <EFBFBD><EFBFBD><EFBFBD>жϱ<EFBFBD>־<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ö<EFBFBD>Ӧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><EFBFBD><EFBFBD>Ļص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
**/
|
2026-03-20 21:16:58 +08:00
|
|
|
|
void EXTI0_1_IRQHandler(void)
|
|
|
|
|
|
{
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD> EXTI0 <20><> EXTI1
|
|
|
|
|
|
if (LHL_EXTI_GetPending(EXTI_LINE_0) == SET) {
|
|
|
|
|
|
LHL_EXTI_ClearPending(EXTI_LINE_0);
|
|
|
|
|
|
if (exti_callbacks[0]) exti_callbacks[0]();
|
|
|
|
|
|
}
|
|
|
|
|
|
if (LHL_EXTI_GetPending(EXTI_LINE_1) == SET) {
|
|
|
|
|
|
LHL_EXTI_ClearPending(EXTI_LINE_1);
|
|
|
|
|
|
if (exti_callbacks[1]) exti_callbacks[1]();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2026-03-20 21:19:53 +08:00
|
|
|
|
/**------------------------------------------------------------------------
|
|
|
|
|
|
* @brief EXTI2 <EFBFBD><EFBFBD> EXTI3 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
* @note <EFBFBD>ֱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> EXTI2 <EFBFBD><EFBFBD> EXTI3 <EFBFBD><EFBFBD><EFBFBD>жϱ<EFBFBD>־<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ö<EFBFBD>Ӧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><EFBFBD><EFBFBD>Ļص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
**/
|
2026-03-20 21:16:58 +08:00
|
|
|
|
void EXTI2_3_IRQHandler(void)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (LHL_EXTI_GetPending(EXTI_LINE_2) == SET) {
|
|
|
|
|
|
LHL_EXTI_ClearPending(EXTI_LINE_2);
|
|
|
|
|
|
if (exti_callbacks[2]) exti_callbacks[2]();
|
|
|
|
|
|
}
|
|
|
|
|
|
if (LHL_EXTI_GetPending(EXTI_LINE_3) == SET) {
|
|
|
|
|
|
LHL_EXTI_ClearPending(EXTI_LINE_3);
|
|
|
|
|
|
if (exti_callbacks[3]) exti_callbacks[3]();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2026-03-20 21:19:53 +08:00
|
|
|
|
/**------------------------------------------------------------------------
|
|
|
|
|
|
* @brief EXTI4 <EFBFBD><EFBFBD> EXTI7 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
* @note ѭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> EXTI4~7 <EFBFBD><EFBFBD><EFBFBD>жϱ<EFBFBD>־<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ö<EFBFBD>Ӧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><EFBFBD><EFBFBD>Ļص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
**/
|
2026-03-20 21:16:58 +08:00
|
|
|
|
void EXTI4_7_IRQHandler(void)
|
|
|
|
|
|
{
|
|
|
|
|
|
for (int i = 4; i <= 7; i++) {
|
|
|
|
|
|
EXTI_LINE_t line = (EXTI_LINE_t)(1U << i);
|
|
|
|
|
|
if (LHL_EXTI_GetPending(line) == SET) {
|
|
|
|
|
|
LHL_EXTI_ClearPending(line);
|
|
|
|
|
|
if (exti_callbacks[i]) exti_callbacks[i]();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2026-03-20 21:19:53 +08:00
|
|
|
|
}
|
|
|
|
|
|
/**------------------------------------------------------------------------
|
|
|
|
|
|
* @brief EXTI10 <EFBFBD><EFBFBD> EXTI11 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
* @note <EFBFBD>ֱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> EXTI10 <EFBFBD><EFBFBD> EXTI11 <EFBFBD><EFBFBD><EFBFBD>жϱ<EFBFBD>־<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ö<EFBFBD>Ӧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><EFBFBD><EFBFBD>Ļص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
**/
|
|
|
|
|
|
void EXTI10_11_IRQHandler(void)
|
|
|
|
|
|
{
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD> EXTI0 <20><> EXTI1
|
|
|
|
|
|
if (LHL_EXTI_GetPending(EXTI_LINE_10) == SET) {
|
|
|
|
|
|
LHL_EXTI_ClearPending(EXTI_LINE_10);
|
|
|
|
|
|
if (exti_callbacks[10]) exti_callbacks[10]();
|
|
|
|
|
|
}
|
|
|
|
|
|
if (LHL_EXTI_GetPending(EXTI_LINE_11) == SET) {
|
|
|
|
|
|
LHL_EXTI_ClearPending(EXTI_LINE_11);
|
|
|
|
|
|
if (exti_callbacks[11]) exti_callbacks[11]();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
/**------------------------------------------------------------------------
|
|
|
|
|
|
* @brief EXTI12 <EFBFBD><EFBFBD> EXTI13 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
* @note <EFBFBD>ֱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> EXTI12 <EFBFBD><EFBFBD> EXTI13 <EFBFBD><EFBFBD><EFBFBD>жϱ<EFBFBD>־<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ö<EFBFBD>Ӧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><EFBFBD><EFBFBD>Ļص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
**/
|
|
|
|
|
|
void EXTI12_13_IRQHandler(void)
|
|
|
|
|
|
{
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD> EXTI0 <20><> EXTI1
|
|
|
|
|
|
if (LHL_EXTI_GetPending(EXTI_LINE_12) == SET) {
|
|
|
|
|
|
if (exti_callbacks[12]) exti_callbacks[12]();
|
|
|
|
|
|
LHL_EXTI_ClearPending(EXTI_LINE_12);
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (LHL_EXTI_GetPending(EXTI_LINE_13) == SET) {
|
|
|
|
|
|
LHL_EXTI_ClearPending(EXTI_LINE_13);
|
|
|
|
|
|
if (exti_callbacks[13]) exti_callbacks[13]();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|