stm32h7xx_hal_exti.c
Go to the documentation of this file.
1 
120 /* Includes ------------------------------------------------------------------*/
121 #include "stm32h7xx_hal.h"
122 
131 #ifdef HAL_EXTI_MODULE_ENABLED
132 
133 /* Private typedef -----------------------------------------------------------*/
134 /* Private defines ------------------------------------------------------------*/
138 #define EXTI_MODE_OFFSET 0x04U /* 0x10: offset between CPU IMR/EMR registers */
139 #define EXTI_CONFIG_OFFSET 0x08U /* 0x20: offset between CPU Rising/Falling configuration registers */
140 
144 /* Private macros ------------------------------------------------------------*/
145 /* Private variables ---------------------------------------------------------*/
146 /* Private function prototypes -----------------------------------------------*/
147 /* Exported functions --------------------------------------------------------*/
148 
172 {
173  __IO uint32_t *regaddr;
174  uint32_t regval;
175  uint32_t linepos;
176  uint32_t maskline;
177  uint32_t offset;
178  uint32_t pcrlinepos;
179 
180  /* Check null pointer */
181  if ((hexti == NULL) || (pExtiConfig == NULL))
182  {
183  return HAL_ERROR;
184  }
185 
186  /* Check the parameters */
187  assert_param(IS_EXTI_LINE(pExtiConfig->Line));
188  assert_param(IS_EXTI_MODE(pExtiConfig->Mode));
189 
190  /* Assign line number to handle */
191  hexti->Line = pExtiConfig->Line;
192 
193  /* compute line register offset and line mask */
194  offset = ((pExtiConfig->Line & EXTI_REG_MASK) >> EXTI_REG_SHIFT);
195  linepos = (pExtiConfig->Line & EXTI_PIN_MASK);
196  maskline = (1UL << linepos);
197 
198  /* Configure triggers for configurable lines */
199  if ((pExtiConfig->Line & EXTI_CONFIG) != 0x00U)
200  {
201  assert_param(IS_EXTI_TRIGGER(pExtiConfig->Trigger));
202 
203  /* Configure rising trigger */
204  regaddr = (__IO uint32_t *)(&EXTI->RTSR1 + (EXTI_CONFIG_OFFSET * offset));
205  regval = *regaddr;
206 
207  /* Mask or set line */
208  if ((pExtiConfig->Trigger & EXTI_TRIGGER_RISING) != 0x00U)
209  {
210  regval |= maskline;
211  }
212  else
213  {
214  regval &= ~maskline;
215  }
216 
217  /* Store rising trigger mode */
218  *regaddr = regval;
219 
220  /* Configure falling trigger */
221  regaddr = (__IO uint32_t *)(&EXTI->FTSR1 + (EXTI_CONFIG_OFFSET * offset));
222  regval = *regaddr;
223 
224  /* Mask or set line */
225  if ((pExtiConfig->Trigger & EXTI_TRIGGER_FALLING) != 0x00U)
226  {
227  regval |= maskline;
228  }
229  else
230  {
231  regval &= ~maskline;
232  }
233 
234  /* Store falling trigger mode */
235  *regaddr = regval;
236 
237  /* Configure gpio port selection in case of gpio exti line */
238  if ((pExtiConfig->Line & EXTI_GPIO) == EXTI_GPIO)
239  {
240  assert_param(IS_EXTI_GPIO_PORT(pExtiConfig->GPIOSel));
241  assert_param(IS_EXTI_GPIO_PIN(linepos));
242 
243  regval = SYSCFG->EXTICR[(linepos >> 2U) & 0x03UL];
244  regval &= ~(SYSCFG_EXTICR1_EXTI0 << (SYSCFG_EXTICR1_EXTI1_Pos * (linepos & 0x03U)));
245  regval |= (pExtiConfig->GPIOSel << (SYSCFG_EXTICR1_EXTI1_Pos * (linepos & 0x03U)));
246  SYSCFG->EXTICR[(linepos >> 2U) & 0x03UL] = regval;
247  }
248  }
249 
250  /* Configure interrupt mode : read current mode */
251  regaddr = (__IO uint32_t *)(&EXTI->IMR1 + (EXTI_MODE_OFFSET * offset));
252  regval = *regaddr;
253 
254  /* Mask or set line */
255  if ((pExtiConfig->Mode & EXTI_MODE_INTERRUPT) != 0x00U)
256  {
257  regval |= maskline;
258  }
259  else
260  {
261  regval &= ~maskline;
262  }
263 
264  /* Store interrupt mode */
265  *regaddr = regval;
266 
267  /* The event mode cannot be configured if the line does not support it */
268  assert_param(((pExtiConfig->Line & EXTI_EVENT) == EXTI_EVENT) || ((pExtiConfig->Mode & EXTI_MODE_EVENT) != EXTI_MODE_EVENT));
269 
270  /* Configure event mode : read current mode */
271  regaddr = (__IO uint32_t *)(&EXTI->EMR1 + (EXTI_MODE_OFFSET * offset));
272  regval = *regaddr;
273 
274  /* Mask or set line */
275  if ((pExtiConfig->Mode & EXTI_MODE_EVENT) != 0x00U)
276  {
277  regval |= maskline;
278  }
279  else
280  {
281  regval &= ~maskline;
282  }
283 
284  /* Store event mode */
285  *regaddr = regval;
286 
287 #if defined (DUAL_CORE)
288  /* Configure interrupt mode for Core2 : read current mode */
289  regaddr = (__IO uint32_t *)(&EXTI->C2IMR1 + (EXTI_MODE_OFFSET * offset));
290  regval = *regaddr;
291 
292  /* Mask or set line */
293  if ((pExtiConfig->Mode & EXTI_MODE_CORE2_INTERRUPT) != 0x00U)
294  {
295  regval |= maskline;
296  }
297  else
298  {
299  regval &= ~maskline;
300  }
301 
302  /* Store interrupt mode */
303  *regaddr = regval;
304 
305  /* The event mode cannot be configured if the line does not support it */
306  assert_param(((pExtiConfig->Line & EXTI_EVENT) == EXTI_EVENT) || ((pExtiConfig->Mode & EXTI_MODE_CORE2_EVENT) != EXTI_MODE_CORE2_EVENT));
307 
308  /* Configure event mode : read current mode */
309  regaddr = (__IO uint32_t *)(&EXTI->C2EMR1 + (EXTI_MODE_OFFSET * offset));
310  regval = *regaddr;
311 
312  /* Mask or set line */
313  if ((pExtiConfig->Mode & EXTI_MODE_CORE2_EVENT) != 0x00U)
314  {
315  regval |= maskline;
316  }
317  else
318  {
319  regval &= ~maskline;
320  }
321 
322  /* Store event mode */
323  *regaddr = regval;
324 #endif /* DUAL_CORE */
325 
326  /* Configure the D3 PendClear source in case of Wakeup target is Any */
327  if ((pExtiConfig->Line & EXTI_TARGET_MASK) == EXTI_TARGET_MSK_ALL)
328  {
330 
331  /*Calc the PMR register address for the given line */
332  regaddr = (__IO uint32_t *)(&EXTI->D3PMR1 + (EXTI_CONFIG_OFFSET * offset));
333  regval = *regaddr;
334 
335  if(pExtiConfig->PendClearSource == EXTI_D3_PENDCLR_SRC_NONE)
336  {
337  /* Clear D3PMRx register for the given line */
338  regval &= ~maskline;
339  /* Store D3PMRx register value */
340  *regaddr = regval;
341  }
342  else
343  {
344  /* Set D3PMRx register to 1 for the given line */
345  regval |= maskline;
346  /* Store D3PMRx register value */
347  *regaddr = regval;
348 
349  if(linepos < 16UL)
350  {
351  regaddr = (__IO uint32_t *)(&EXTI->D3PCR1L + (EXTI_CONFIG_OFFSET * offset));
352  pcrlinepos = 1UL << linepos;
353  }
354  else
355  {
356  regaddr = (__IO uint32_t *)(&EXTI->D3PCR1H + (EXTI_CONFIG_OFFSET * offset));
357  pcrlinepos = 1UL << (linepos - 16UL);
358  }
359 
360  regval = (*regaddr & (~(pcrlinepos * pcrlinepos * 3UL))) | (pcrlinepos * pcrlinepos * (pExtiConfig->PendClearSource - 1UL));
361  *regaddr = regval;
362  }
363  }
364 
365  return HAL_OK;
366 }
367 
368 
376 {
377  __IO uint32_t *regaddr;
378  uint32_t regval;
379  uint32_t linepos;
380  uint32_t maskline;
381  uint32_t offset;
382  uint32_t pcrlinepos;
383 
384  /* Check null pointer */
385  if ((hexti == NULL) || (pExtiConfig == NULL))
386  {
387  return HAL_ERROR;
388  }
389 
390  /* Check the parameter */
391  assert_param(IS_EXTI_LINE(hexti->Line));
392 
393  /* Store handle line number to configuration structure */
394  pExtiConfig->Line = hexti->Line;
395 
396  /* compute line register offset and line mask */
397  offset = ((pExtiConfig->Line & EXTI_REG_MASK) >> EXTI_REG_SHIFT);
398  linepos = (pExtiConfig->Line & EXTI_PIN_MASK);
399  maskline = (1UL << linepos);
400 
401  /* 1] Get core mode : interrupt */
402  regaddr = (__IO uint32_t *)(&EXTI->IMR1 + (EXTI_MODE_OFFSET * offset));
403  regval = *regaddr;
404 
405  pExtiConfig->Mode = EXTI_MODE_NONE;
406 
407  /* Check if selected line is enable */
408  if ((regval & maskline) != 0x00U)
409  {
410  pExtiConfig->Mode = EXTI_MODE_INTERRUPT;
411  }
412 
413  /* Get event mode */
414  regaddr = (__IO uint32_t *)(&EXTI->EMR1 + (EXTI_MODE_OFFSET * offset));
415  regval = *regaddr;
416 
417  /* Check if selected line is enable */
418  if ((regval & maskline) != 0x00U)
419  {
420  pExtiConfig->Mode |= EXTI_MODE_EVENT;
421  }
422 #if defined (DUAL_CORE)
423  regaddr = (__IO uint32_t *)(&EXTI->C2IMR1 + (EXTI_MODE_OFFSET * offset));
424  regval = *regaddr;
425 
426  /* Check if selected line is enable */
427  if ((regval & maskline) != 0x00U)
428  {
429  pExtiConfig->Mode = EXTI_MODE_CORE2_INTERRUPT;
430  }
431 
432  /* Get event mode */
433  regaddr = (__IO uint32_t *)(&EXTI->C2EMR1 + (EXTI_MODE_OFFSET * offset));
434  regval = *regaddr;
435 
436  /* Check if selected line is enable */
437  if ((regval & maskline) != 0x00U)
438  {
439  pExtiConfig->Mode |= EXTI_MODE_CORE2_EVENT;
440  }
441 #endif /*DUAL_CORE*/
442 
443  /* 2] Get trigger for configurable lines : rising */
444  if ((pExtiConfig->Line & EXTI_CONFIG) != 0x00U)
445  {
446  regaddr = (__IO uint32_t *)(&EXTI->RTSR1 + (EXTI_CONFIG_OFFSET * offset));
447  regval = *regaddr;
448 
449  /* Check if configuration of selected line is enable */
450  if ((regval & maskline) != 0x00U)
451  {
452  pExtiConfig->Trigger = EXTI_TRIGGER_RISING;
453  }
454  else
455  {
456  pExtiConfig->Trigger = EXTI_TRIGGER_NONE;
457  }
458 
459  /* Get falling configuration */
460  regaddr = (__IO uint32_t *)(&EXTI->FTSR1 + (EXTI_CONFIG_OFFSET * offset));
461  regval = *regaddr;
462 
463  /* Check if configuration of selected line is enable */
464  if ((regval & maskline) != 0x00U)
465  {
466  pExtiConfig->Trigger |= EXTI_TRIGGER_FALLING;
467  }
468 
469  /* Get Gpio port selection for gpio lines */
470  if ((pExtiConfig->Line & EXTI_GPIO) == EXTI_GPIO)
471  {
472  assert_param(IS_EXTI_GPIO_PIN(linepos));
473 
474  regval = SYSCFG->EXTICR[(linepos >> 2U) & 0x03UL];
475  pExtiConfig->GPIOSel = ((regval << (SYSCFG_EXTICR1_EXTI1_Pos * (3UL - (linepos & 0x03UL)))) >> 24U);
476  }
477  else
478  {
479  pExtiConfig->GPIOSel = 0x00U;
480  }
481  }
482  else
483  {
484  pExtiConfig->Trigger = EXTI_TRIGGER_NONE;
485  pExtiConfig->GPIOSel = 0x00U;
486  }
487 
488  /* 3] Get D3 Pend Clear source */
489  if ((pExtiConfig->Line & EXTI_TARGET_MASK) == EXTI_TARGET_MSK_ALL)
490  {
491  regaddr = (__IO uint32_t *)(&EXTI->D3PMR1 + (EXTI_CONFIG_OFFSET * offset));
492  if(((*regaddr) & linepos) == 0UL)
493  {
494  /* if PMR unset, then no pend clear source is used */
496  }
497  else
498  {
499  /* if wakeup target is any and PMR set, the read pend clear source from D3PCRxL/H */
500  if(linepos < 16UL)
501  {
502  regaddr = (__IO uint32_t *)(&EXTI->D3PCR1L + (EXTI_CONFIG_OFFSET * offset));
503  pcrlinepos = 1UL << linepos;
504  }
505  else
506  {
507  regaddr = (__IO uint32_t *)(&EXTI->D3PCR1H + (EXTI_CONFIG_OFFSET * offset));
508  pcrlinepos = 1UL << (linepos - 16UL);
509  }
510 
511  pExtiConfig->PendClearSource = 1UL + ((*regaddr & (pcrlinepos * pcrlinepos * 3UL)) / (pcrlinepos * pcrlinepos));
512  }
513  }
514  else
515  {
516  /* if line wakeup target is not any, then no pend clear source is used */
518  }
519 
520  return HAL_OK;
521 }
522 
523 
530 {
531  __IO uint32_t *regaddr;
532  uint32_t regval;
533  uint32_t linepos;
534  uint32_t maskline;
535  uint32_t offset;
536  uint32_t pcrlinepos;
537 
538  /* Check null pointer */
539  if (hexti == NULL)
540  {
541  return HAL_ERROR;
542  }
543 
544  /* Check the parameter */
545  assert_param(IS_EXTI_LINE(hexti->Line));
546 
547  /* compute line register offset and line mask */
548  offset = ((hexti->Line & EXTI_REG_MASK) >> EXTI_REG_SHIFT);
549  linepos = (hexti->Line & EXTI_PIN_MASK);
550  maskline = (1UL << linepos);
551 
552  /* 1] Clear interrupt mode */
553  regaddr = (__IO uint32_t *)(&EXTI->IMR1 + (EXTI_MODE_OFFSET * offset));
554  regval = (*regaddr & ~maskline);
555  *regaddr = regval;
556 
557  /* 2] Clear event mode */
558  regaddr = (__IO uint32_t *)(&EXTI->EMR1 + (EXTI_MODE_OFFSET * offset));
559  regval = (*regaddr & ~maskline);
560  *regaddr = regval;
561 
562 #if defined (DUAL_CORE)
563  /* 1] Clear CM4 interrupt mode */
564  regaddr = (__IO uint32_t *)(&EXTI->C2IMR1 + (EXTI_MODE_OFFSET * offset));
565  regval = (*regaddr & ~maskline);
566  *regaddr = regval;
567 
568  /* 2] Clear CM4 event mode */
569  regaddr = (__IO uint32_t *)(&EXTI->C2EMR1 + (EXTI_MODE_OFFSET * offset));
570  regval = (*regaddr & ~maskline);
571  *regaddr = regval;
572 #endif /* DUAL_CORE */
573 
574  /* 3] Clear triggers in case of configurable lines */
575  if ((hexti->Line & EXTI_CONFIG) != 0x00U)
576  {
577  regaddr = (__IO uint32_t *)(&EXTI->RTSR1 + (EXTI_CONFIG_OFFSET * offset));
578  regval = (*regaddr & ~maskline);
579  *regaddr = regval;
580 
581  regaddr = (__IO uint32_t *)(&EXTI->FTSR1 + (EXTI_CONFIG_OFFSET * offset));
582  regval = (*regaddr & ~maskline);
583  *regaddr = regval;
584 
585  /* Get Gpio port selection for gpio lines */
586  if ((hexti->Line & EXTI_GPIO) == EXTI_GPIO)
587  {
588  assert_param(IS_EXTI_GPIO_PIN(linepos));
589 
590  regval = SYSCFG->EXTICR[(linepos >> 2U) & 0x03UL];
591  regval &= ~(SYSCFG_EXTICR1_EXTI0 << (SYSCFG_EXTICR1_EXTI1_Pos * (linepos & 0x03UL)));
592  SYSCFG->EXTICR[(linepos >> 2U) & 0x03UL] = regval;
593  }
594  }
595 
596  /* 4] Clear D3 Config lines */
597  if ((hexti->Line & EXTI_TARGET_MASK) == EXTI_TARGET_MSK_ALL)
598  {
599  regaddr = (__IO uint32_t *)(&EXTI->D3PMR1 + (EXTI_CONFIG_OFFSET * offset));
600  *regaddr = (*regaddr & ~maskline);
601 
602  if(linepos < 16UL)
603  {
604  regaddr = (__IO uint32_t *)(&EXTI->D3PCR1L + (EXTI_CONFIG_OFFSET * offset));
605  pcrlinepos = 1UL << linepos;
606  }
607  else
608  {
609  regaddr = (__IO uint32_t *)(&EXTI->D3PCR1H + (EXTI_CONFIG_OFFSET * offset));
610  pcrlinepos = 1UL << (linepos - 16UL);
611  }
612 
613  /*Clear D3 PendClear source */
614  *regaddr &= (~(pcrlinepos * pcrlinepos * 3UL));
615  }
616 
617  return HAL_OK;
618 }
619 
620 
629 HAL_StatusTypeDef HAL_EXTI_RegisterCallback(EXTI_HandleTypeDef *hexti, EXTI_CallbackIDTypeDef CallbackID, void (*pPendingCbfn)(void))
630 {
631  HAL_StatusTypeDef status = HAL_OK;
632 
633  /* Check null pointer */
634  if (hexti == NULL)
635  {
636  return HAL_ERROR;
637  }
638 
639  switch (CallbackID)
640  {
642  hexti->PendingCallback = pPendingCbfn;
643  break;
644 
645  default:
646  status = HAL_ERROR;
647  break;
648  }
649 
650  return status;
651 }
652 
653 
662 {
663  /* Check the parameters */
664  assert_param(IS_EXTI_LINE(ExtiLine));
665 
666  /* Check null pointer */
667  if (hexti == NULL)
668  {
669  return HAL_ERROR;
670  }
671  else
672  {
673  /* Store line number as handle private field */
674  hexti->Line = ExtiLine;
675 
676  return HAL_OK;
677  }
678 }
679 
680 
703 {
704  __IO uint32_t *regaddr;
705  uint32_t regval;
706  uint32_t maskline;
707  uint32_t offset;
708 
709  /* Compute line register offset and line mask */
710  offset = ((hexti->Line & EXTI_REG_MASK) >> EXTI_REG_SHIFT);
711  maskline = (1UL << (hexti->Line & EXTI_PIN_MASK));
712 
713 #if defined(DUAL_CORE)
715  {
716  /* Get pending register address */
717  regaddr = (__IO uint32_t *)(&EXTI->PR1 + (EXTI_MODE_OFFSET * offset));
718  }
719  else /* Cortex-M4*/
720  {
721  /* Get pending register address */
722  regaddr = (__IO uint32_t *)(&EXTI->C2PR1 + (EXTI_MODE_OFFSET * offset));
723  }
724 #else
725  regaddr = (__IO uint32_t *)(&EXTI->PR1 + (EXTI_MODE_OFFSET * offset));
726 #endif /* DUAL_CORE */
727 
728  /* Get pending bit */
729  regval = (*regaddr & maskline);
730 
731  if (regval != 0x00U)
732  {
733  /* Clear pending bit */
734  *regaddr = maskline;
735 
736  /* Call callback */
737  if (hexti->PendingCallback != NULL)
738  {
739  hexti->PendingCallback();
740  }
741  }
742 }
743 
744 
754 uint32_t HAL_EXTI_GetPending(EXTI_HandleTypeDef *hexti, uint32_t Edge)
755 {
756  __IO uint32_t *regaddr;
757  uint32_t regval;
758  uint32_t linepos;
759  uint32_t maskline;
760  uint32_t offset;
761 
762  /* Check parameters */
763  assert_param(IS_EXTI_LINE(hexti->Line));
766 
767  /* compute line register offset and line mask */
768  offset = ((hexti->Line & EXTI_REG_MASK) >> EXTI_REG_SHIFT);
769  linepos = (hexti->Line & EXTI_PIN_MASK);
770  maskline = (1UL << linepos);
771 
772 #if defined(DUAL_CORE)
774  {
775  /* Get pending register address */
776  regaddr = (__IO uint32_t *)(&EXTI->PR1 + (EXTI_MODE_OFFSET * offset));
777  }
778  else /* Cortex-M4 */
779  {
780  /* Get pending register address */
781  regaddr = (__IO uint32_t *)(&EXTI->C2PR1 + (EXTI_MODE_OFFSET * offset));
782  }
783 #else
784  regaddr = (__IO uint32_t *)(&EXTI->PR1 + (EXTI_MODE_OFFSET * offset));
785 #endif /* DUAL_CORE */
786 
787  /* return 1 if bit is set else 0 */
788  regval = ((*regaddr & maskline) >> linepos);
789  return regval;
790 }
791 
792 
802 void HAL_EXTI_ClearPending(EXTI_HandleTypeDef *hexti, uint32_t Edge)
803 {
804  __IO uint32_t *regaddr;
805  uint32_t maskline;
806  uint32_t offset;
807 
808  /* Check parameters */
809  assert_param(IS_EXTI_LINE(hexti->Line));
812 
813  /* compute line register offset and line mask */
814  offset = ((hexti->Line & EXTI_REG_MASK) >> EXTI_REG_SHIFT);
815  maskline = (1UL << (hexti->Line & EXTI_PIN_MASK));
816 
817 #if defined(DUAL_CORE)
819  {
820  /* Get pending register address */
821  regaddr = (__IO uint32_t *)(&EXTI->PR1 + (EXTI_MODE_OFFSET * offset));
822  }
823  else /* Cortex-M4 */
824  {
825  /* Get pending register address */
826  regaddr = (__IO uint32_t *)(&EXTI->C2PR1 + (EXTI_MODE_OFFSET * offset));
827  }
828 #else
829  regaddr = (__IO uint32_t *)(&EXTI->PR1 + (EXTI_MODE_OFFSET * offset));
830 #endif /* DUAL_CORE */
831 
832  /* Clear Pending bit */
833  *regaddr = maskline;
834 }
835 
842 {
843  __IO uint32_t *regaddr;
844  uint32_t maskline;
845  uint32_t offset;
846 
847  /* Check parameters */
848  assert_param(IS_EXTI_LINE(hexti->Line));
850 
851  /* compute line register offset and line mask */
852  offset = ((hexti->Line & EXTI_REG_MASK) >> EXTI_REG_SHIFT);
853  maskline = (1UL << (hexti->Line & EXTI_PIN_MASK));
854 
855  regaddr = (__IO uint32_t *)(&EXTI->SWIER1 + (EXTI_CONFIG_OFFSET * offset));
856  *regaddr = maskline;
857 }
858 
859 
868 #endif /* HAL_EXTI_MODULE_ENABLED */
869 
877 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
EXTI_ConfigTypeDef::Line
uint32_t Line
Definition: stm32f7xx_hal_exti.h:64
assert_param
#define assert_param(expr)
Include module's header file.
Definition: stm32f407/stm32f407g-disc1/Inc/stm32f4xx_hal_conf.h:353
__IO
#define __IO
Definition: imxrt1050/imxrt1050-evkb/CMSIS/core_cm7.h:237
HAL_StatusTypeDef
HAL_StatusTypeDef
HAL Status structures definition
Definition: stm32f407/stm32f407g-disc1/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_def.h:40
IS_EXTI_CONFIG_LINE
#define IS_EXTI_CONFIG_LINE(__LINE__)
Definition: stm32f7xx_hal_exti.h:235
IS_EXTI_GPIO_PORT
#define IS_EXTI_GPIO_PORT(__PORT__)
Definition: stm32f7xx_hal_exti.h:250
HAL_EXTI_ClearPending
void HAL_EXTI_ClearPending(EXTI_HandleTypeDef *hexti, uint32_t Edge)
EXTI_REG_MASK
#define EXTI_REG_MASK
Definition: stm32h735/stm32h735g-dk/Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal_exti.h:360
NULL
#define NULL
Definition: porcupine/demo/c/dr_libs/tests/external/miniaudio/extras/speex_resampler/thirdparty/resample.c:92
EXTI_HandleTypeDef::Line
uint32_t Line
Definition: stm32f7xx_hal_exti.h:55
EXTI_MODE_EVENT
#define EXTI_MODE_EVENT
Definition: stm32f7xx_hal_exti.h:127
IS_EXTI_PENDING_EDGE
#define IS_EXTI_PENDING_EDGE(__LINE__)
Definition: stm32f7xx_hal_exti.h:231
HAL_EXTI_GenerateSWI
void HAL_EXTI_GenerateSWI(EXTI_HandleTypeDef *hexti)
EXTI_EVENT
#define EXTI_EVENT
Definition: stm32h735/stm32h735g-dk/Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal_exti.h:350
EXTI_TRIGGER_RISING
#define EXTI_TRIGGER_RISING
Definition: stm32f7xx_hal_exti.h:137
EXTI_HandleTypeDef
EXTI Handle structure definition.
Definition: stm32f7xx_hal_exti.h:53
EXTI_ConfigTypeDef::Mode
uint32_t Mode
Definition: stm32f7xx_hal_exti.h:66
HAL_ERROR
@ HAL_ERROR
Definition: stm32f407/stm32f407g-disc1/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_def.h:43
EXTI_CallbackIDTypeDef
EXTI_CallbackIDTypeDef
Definition: stm32f7xx_hal_exti.h:45
IS_EXTI_LINE
#define IS_EXTI_LINE(__LINE__)
Definition: stm32f7xx_hal_exti.h:221
EXTI_TRIGGER_FALLING
#define EXTI_TRIGGER_FALLING
Definition: stm32f7xx_hal_exti.h:138
EXTI_GPIO
#define EXTI_GPIO
Definition: stm32f7xx_hal_exti.h:184
HAL_OK
@ HAL_OK
Definition: stm32f407/stm32f407g-disc1/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_def.h:42
IS_EXTI_GPIO_PIN
#define IS_EXTI_GPIO_PIN(__PIN__)
Definition: stm32f7xx_hal_exti.h:262
IS_EXTI_MODE
#define IS_EXTI_MODE(__LINE__)
Definition: stm32f7xx_hal_exti.h:226
EXTI_REG_SHIFT
#define EXTI_REG_SHIFT
EXTI Register and bit usage.
Definition: stm32h735/stm32h735g-dk/Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal_exti.h:356
HAL_GetCurrentCPUID
uint32_t HAL_GetCurrentCPUID(void)
EXTI_ConfigTypeDef::Trigger
uint32_t Trigger
Definition: stm32f7xx_hal_exti.h:68
EXTI_HandleTypeDef::PendingCallback
void(* PendingCallback)(void)
Definition: stm32f7xx_hal_exti.h:56
EXTI_ConfigTypeDef::GPIOSel
uint32_t GPIOSel
Definition: stm32f7xx_hal_exti.h:70
SYSCFG_EXTICR1_EXTI1_Pos
#define SYSCFG_EXTICR1_EXTI1_Pos
Definition: stm32f407xx.h:11631
HAL_EXTI_GetPending
uint32_t HAL_EXTI_GetPending(EXTI_HandleTypeDef *hexti, uint32_t Edge)
EXTI_TARGET_MASK
#define EXTI_TARGET_MASK
Definition: stm32h735/stm32h735g-dk/Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal_exti.h:375
SYSCFG
#define SYSCFG
Definition: stm32f407xx.h:1098
EXTI_ConfigTypeDef::PendClearSource
uint32_t PendClearSource
Definition: stm32h735/stm32h735g-dk/Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal_exti.h:75
HAL_EXTI_ClearConfigLine
HAL_StatusTypeDef HAL_EXTI_ClearConfigLine(EXTI_HandleTypeDef *hexti)
IS_EXTI_D3_PENDCLR_SRC
#define IS_EXTI_D3_PENDCLR_SRC(__SRC__)
Definition: stm32h735/stm32h735g-dk/Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal_exti.h:475
EXTI_MODE_INTERRUPT
#define EXTI_MODE_INTERRUPT
Definition: stm32f7xx_hal_exti.h:126
HAL_EXTI_SetConfigLine
HAL_StatusTypeDef HAL_EXTI_SetConfigLine(EXTI_HandleTypeDef *hexti, EXTI_ConfigTypeDef *pExtiConfig)
SYSCFG_EXTICR1_EXTI0
#define SYSCFG_EXTICR1_EXTI0
Definition: stm32f407xx.h:11630
HAL_EXTI_IRQHandler
void HAL_EXTI_IRQHandler(EXTI_HandleTypeDef *hexti)
HAL_EXTI_RegisterCallback
HAL_StatusTypeDef HAL_EXTI_RegisterCallback(EXTI_HandleTypeDef *hexti, EXTI_CallbackIDTypeDef CallbackID, void(*pPendingCbfn)(void))
CM7_CPUID
#define CM7_CPUID
Definition: stm32h735/stm32h735g-dk/Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal_cortex.h:275
EXTI_D3_PENDCLR_SRC_NONE
#define EXTI_D3_PENDCLR_SRC_NONE
Definition: stm32h735/stm32h735g-dk/Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal_exti.h:302
EXTI_MODE_NONE
#define EXTI_MODE_NONE
Definition: stm32f7xx_hal_exti.h:125
HAL_EXTI_COMMON_CB_ID
@ HAL_EXTI_COMMON_CB_ID
Definition: stm32f7xx_hal_exti.h:47
EXTI_ConfigTypeDef
EXTI Configuration structure definition.
Definition: stm32f7xx_hal_exti.h:62
HAL_EXTI_GetHandle
HAL_StatusTypeDef HAL_EXTI_GetHandle(EXTI_HandleTypeDef *hexti, uint32_t ExtiLine)
IS_EXTI_TRIGGER
#define IS_EXTI_TRIGGER(__LINE__)
Definition: stm32f7xx_hal_exti.h:229
HAL_EXTI_GetConfigLine
HAL_StatusTypeDef HAL_EXTI_GetConfigLine(EXTI_HandleTypeDef *hexti, EXTI_ConfigTypeDef *pExtiConfig)
EXTI_TRIGGER_NONE
#define EXTI_TRIGGER_NONE
Definition: stm32f7xx_hal_exti.h:136
EXTI
#define EXTI
Definition: stm32f407xx.h:1099
EXTI_PIN_MASK
#define EXTI_PIN_MASK
EXTI bit usage.
Definition: stm32f7xx_hal_exti.h:191
EXTI_TARGET_MSK_ALL
#define EXTI_TARGET_MSK_ALL
Definition: stm32h735/stm32h735g-dk/Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal_exti.h:378
EXTI_CONFIG
#define EXTI_CONFIG
Definition: stm32f7xx_hal_exti.h:183


picovoice_driver
Author(s):
autogenerated on Fri Apr 1 2022 02:14:54