130#ifdef HAL_EXTI_MODULE_ENABLED
137#define EXTI_MODE_OFFSET 0x04U
138#define EXTI_CONFIG_OFFSET 0x08U
172 __IO uint32_t *regaddr;
180 if ((hexti ==
NULL) || (pExtiConfig ==
NULL))
195 maskline = (1UL << linepos);
203 regaddr = (
__IO uint32_t *)(&
EXTI->RTSR1 + (EXTI_CONFIG_OFFSET * offset));
220 regaddr = (
__IO uint32_t *)(&
EXTI->FTSR1 + (EXTI_CONFIG_OFFSET * offset));
242 regval =
SYSCFG->EXTICR[(linepos >> 2U) & 0x03UL];
245 SYSCFG->EXTICR[(linepos >> 2U) & 0x03UL] = regval;
250 regaddr = (
__IO uint32_t *)(&
EXTI->IMR1 + (EXTI_MODE_OFFSET * offset));
270 regaddr = (
__IO uint32_t *)(&
EXTI->EMR1 + (EXTI_MODE_OFFSET * offset));
286#if defined (DUAL_CORE)
288 regaddr = (
__IO uint32_t *)(&
EXTI->C2IMR1 + (EXTI_MODE_OFFSET * offset));
292 if ((pExtiConfig->
Mode & EXTI_MODE_CORE2_INTERRUPT) != 0x00U)
308 regaddr = (
__IO uint32_t *)(&
EXTI->C2EMR1 + (EXTI_MODE_OFFSET * offset));
312 if ((pExtiConfig->
Mode & EXTI_MODE_CORE2_EVENT) != 0x00U)
331 regaddr = (
__IO uint32_t *)(&
EXTI->D3PMR1 + (EXTI_CONFIG_OFFSET * offset));
350 regaddr = (
__IO uint32_t *)(&
EXTI->D3PCR1L + (EXTI_CONFIG_OFFSET * offset));
351 pcrlinepos = 1UL << linepos;
355 regaddr = (
__IO uint32_t *)(&
EXTI->D3PCR1H + (EXTI_CONFIG_OFFSET * offset));
356 pcrlinepos = 1UL << (linepos - 16UL);
359 regval = (*regaddr & (~(pcrlinepos * pcrlinepos * 3UL))) | (pcrlinepos * pcrlinepos * (pExtiConfig->
PendClearSource - 1UL));
376 __IO uint32_t *regaddr;
384 if ((hexti ==
NULL) || (pExtiConfig ==
NULL))
398 maskline = (1UL << linepos);
401 regaddr = (
__IO uint32_t *)(&
EXTI->IMR1 + (EXTI_MODE_OFFSET * offset));
407 if ((regval & maskline) != 0x00U)
413 regaddr = (
__IO uint32_t *)(&
EXTI->EMR1 + (EXTI_MODE_OFFSET * offset));
417 if ((regval & maskline) != 0x00U)
421#if defined (DUAL_CORE)
422 regaddr = (
__IO uint32_t *)(&
EXTI->C2IMR1 + (EXTI_MODE_OFFSET * offset));
426 if ((regval & maskline) != 0x00U)
428 pExtiConfig->
Mode = EXTI_MODE_CORE2_INTERRUPT;
432 regaddr = (
__IO uint32_t *)(&
EXTI->C2EMR1 + (EXTI_MODE_OFFSET * offset));
436 if ((regval & maskline) != 0x00U)
438 pExtiConfig->
Mode |= EXTI_MODE_CORE2_EVENT;
449 regaddr = (
__IO uint32_t *)(&
EXTI->RTSR1 + (EXTI_CONFIG_OFFSET * offset));
453 if ((regval & maskline) != 0x00U)
459 regaddr = (
__IO uint32_t *)(&
EXTI->FTSR1 + (EXTI_CONFIG_OFFSET * offset));
463 if ((regval & maskline) != 0x00U)
473 regval =
SYSCFG->EXTICR[(linepos >> 2U) & 0x03UL];
484 regaddr = (
__IO uint32_t *)(&
EXTI->D3PMR1 + (EXTI_CONFIG_OFFSET * offset));
485 if(((*regaddr) & linepos) != 0UL)
490 regaddr = (
__IO uint32_t *)(&
EXTI->D3PCR1L + (EXTI_CONFIG_OFFSET * offset));
491 pcrlinepos = 1UL << linepos;
495 regaddr = (
__IO uint32_t *)(&
EXTI->D3PCR1H + (EXTI_CONFIG_OFFSET * offset));
496 pcrlinepos = 1UL << (linepos - 16UL);
499 pExtiConfig->
PendClearSource = 1UL + ((*regaddr & (pcrlinepos * pcrlinepos * 3UL)) / (pcrlinepos * pcrlinepos));
514 __IO uint32_t *regaddr;
533 maskline = (1UL << linepos);
536 regaddr = (
__IO uint32_t *)(&
EXTI->IMR1 + (EXTI_MODE_OFFSET * offset));
537 regval = (*regaddr & ~maskline);
541 regaddr = (
__IO uint32_t *)(&
EXTI->EMR1 + (EXTI_MODE_OFFSET * offset));
542 regval = (*regaddr & ~maskline);
545#if defined (DUAL_CORE)
547 regaddr = (
__IO uint32_t *)(&
EXTI->C2IMR1 + (EXTI_MODE_OFFSET * offset));
548 regval = (*regaddr & ~maskline);
552 regaddr = (
__IO uint32_t *)(&
EXTI->C2EMR1 + (EXTI_MODE_OFFSET * offset));
553 regval = (*regaddr & ~maskline);
560 regaddr = (
__IO uint32_t *)(&
EXTI->RTSR1 + (EXTI_CONFIG_OFFSET * offset));
561 regval = (*regaddr & ~maskline);
564 regaddr = (
__IO uint32_t *)(&
EXTI->FTSR1 + (EXTI_CONFIG_OFFSET * offset));
565 regval = (*regaddr & ~maskline);
573 regval =
SYSCFG->EXTICR[(linepos >> 2U) & 0x03UL];
575 SYSCFG->EXTICR[(linepos >> 2U) & 0x03UL] = regval;
582 regaddr = (
__IO uint32_t *)(&
EXTI->D3PMR1 + (EXTI_CONFIG_OFFSET * offset));
583 *regaddr = (*regaddr & ~maskline);
587 regaddr = (
__IO uint32_t *)(&
EXTI->D3PCR1L + (EXTI_CONFIG_OFFSET * offset));
588 pcrlinepos = 1UL << linepos;
592 regaddr = (
__IO uint32_t *)(&
EXTI->D3PCR1H + (EXTI_CONFIG_OFFSET * offset));
593 pcrlinepos = 1UL << (linepos - 16UL);
597 *regaddr &= (~(pcrlinepos * pcrlinepos * 3UL));
657 hexti->
Line = ExtiLine;
687 __IO uint32_t *regaddr;
696#if defined(DUAL_CORE)
700 regaddr = (
__IO uint32_t *)(&
EXTI->PR1 + (EXTI_MODE_OFFSET * offset));
705 regaddr = (
__IO uint32_t *)(&
EXTI->C2PR1 + (EXTI_MODE_OFFSET * offset));
708 regaddr = (
__IO uint32_t *)(&
EXTI->PR1 + (EXTI_MODE_OFFSET * offset));
712 regval = (*regaddr & maskline);
739 const __IO uint32_t *regaddr;
756 maskline = (1UL << linepos);
758#if defined(DUAL_CORE)
762 regaddr = (
__IO uint32_t *)(&
EXTI->PR1 + (EXTI_MODE_OFFSET * offset));
767 regaddr = (
__IO uint32_t *)(&
EXTI->C2PR1 + (EXTI_MODE_OFFSET * offset));
770 regaddr = (
__IO uint32_t *)(&
EXTI->PR1 + (EXTI_MODE_OFFSET * offset));
774 regval = ((*regaddr & maskline) >> linepos);
790 __IO uint32_t *regaddr;
806#if defined(DUAL_CORE)
810 regaddr = (
__IO uint32_t *)(&
EXTI->PR1 + (EXTI_MODE_OFFSET * offset));
815 regaddr = (
__IO uint32_t *)(&
EXTI->C2PR1 + (EXTI_MODE_OFFSET * offset));
818 regaddr = (
__IO uint32_t *)(&
EXTI->PR1 + (EXTI_MODE_OFFSET * offset));
832 __IO uint32_t *regaddr;
844 regaddr = (
__IO uint32_t *)(&
EXTI->SWIER1 + (EXTI_CONFIG_OFFSET * offset));
#define __IO
Defines 'read / write' permissions.
uint32_t HAL_GetCurrentCPUID(void)
HAL_StatusTypeDef HAL_EXTI_ClearConfigLine(const EXTI_HandleTypeDef *hexti)
HAL_StatusTypeDef HAL_EXTI_SetConfigLine(EXTI_HandleTypeDef *hexti, EXTI_ConfigTypeDef *pExtiConfig)
HAL_StatusTypeDef HAL_EXTI_GetHandle(EXTI_HandleTypeDef *hexti, uint32_t ExtiLine)
HAL_StatusTypeDef HAL_EXTI_GetConfigLine(EXTI_HandleTypeDef *hexti, EXTI_ConfigTypeDef *pExtiConfig)
HAL_StatusTypeDef HAL_EXTI_RegisterCallback(EXTI_HandleTypeDef *hexti, EXTI_CallbackIDTypeDef CallbackID, void(*pPendingCbfn)(void))
void HAL_EXTI_ClearPending(const EXTI_HandleTypeDef *hexti, uint32_t Edge)
void HAL_EXTI_IRQHandler(const EXTI_HandleTypeDef *hexti)
uint32_t HAL_EXTI_GetPending(const EXTI_HandleTypeDef *hexti, uint32_t Edge)
void HAL_EXTI_GenerateSWI(const EXTI_HandleTypeDef *hexti)
#define EXTI_MODE_INTERRUPT
#define EXTI_D3_PENDCLR_SRC_NONE
No D3 domain pendclear source , PMRx register to be set to zero.
#define EXTI_TARGET_MSK_ALL
#define EXTI_REG_SHIFT
EXTI Register and bit usage.
#define IS_EXTI_CONFIG_LINE(__EXTI_LINE__)
#define IS_EXTI_GPIO_PIN(__PIN__)
#define IS_EXTI_GPIO_PORT(__PORT__)
#define IS_EXTI_PENDING_EDGE(__EXTI_LINE__)
#define IS_EXTI_MODE(__MODE__)
#define IS_EXTI_TRIGGER(__EXTI_LINE__)
#define IS_EXTI_LINE(__EXTI_LINE__)
#define IS_EXTI_D3_PENDCLR_SRC(__SRC__)
#define EXTI_TRIGGER_RISING
#define EXTI_TRIGGER_FALLING
#define EXTI_TRIGGER_NONE
#define SYSCFG_EXTICR1_EXTI1_Pos
#define SYSCFG_EXTICR1_EXTI0
EXTI 0 configuration.
This file contains all the functions prototypes for the HAL module driver.
#define assert_param(expr)
Uncomment the line below to expanse the "assert_param" macro in the HAL drivers code.
HAL_StatusTypeDef
HAL Status structures definition.
EXTI Configuration structure definition.
uint32_t Line
The EXTI line to be configured.
uint32_t Mode
The EXTI Mode to be configured for a core.
uint32_t PendClearSource
Specifies the event pending clear source for D3/SRD domain.
uint32_t GPIOSel
The EXTI GPIO multiplexer selection to be configured.
uint32_t Trigger
The EXTI Trigger to be configured.
EXTI Handle structure definition.
void(* PendingCallback)(void)
EXTI pending callback.
uint32_t Line
EXTI line number.