Skip to content

Commit 1a61f98

Browse files
authored
Merge pull request #783 from fpistm/MP1_GPIO_EXTI
MP1 GPIO EXTI
2 parents 0ff460b + a8f5311 commit 1a61f98

File tree

2 files changed

+131
-5
lines changed

2 files changed

+131
-5
lines changed

cores/arduino/stm32/interrupt.cpp

Lines changed: 125 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,9 @@
3636
******************************************************************************
3737
*/
3838
#include "interrupt.h"
39-
39+
#if defined(STM32MP1xx)
40+
#include "lock_resource.h"
41+
#endif
4042
#if !defined(HAL_EXTI_MODULE_DISABLED)
4143

4244
/* Private Types */
@@ -177,8 +179,16 @@ void stm32_interrupt_enable(GPIO_TypeDef *port, uint16_t pin, callback_function_
177179

178180
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
179181

182+
#if defined(STM32MP1xx)
183+
PERIPH_LOCK(port);
184+
#endif
185+
180186
HAL_GPIO_Init(port, &GPIO_InitStruct);
181187

188+
#if defined(STM32MP1xx)
189+
PERIPH_UNLOCK(port);
190+
#endif
191+
182192
gpio_irq_conf[id].callback = callback;
183193

184194
// Enable and set EXTI Interrupt
@@ -236,7 +246,7 @@ void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
236246
}
237247
}
238248

239-
#if defined (STM32G0xx)
249+
#if defined (STM32G0xx) || defined (STM32MP1xx)
240250
/**
241251
* @brief EXTI line detection callback.
242252
* @param GPIO_Pin Specifies the port pin connected to corresponding EXTI line.
@@ -359,7 +369,7 @@ void EXTI4_IRQHandler(void)
359369
HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_4);
360370
}
361371

362-
372+
#if !defined(STM32MP1xx)
363373
/**
364374
* @brief This function handles external line 5 to 9 interrupt request.
365375
* @param None
@@ -385,7 +395,119 @@ void EXTI15_10_IRQHandler(void)
385395
HAL_GPIO_EXTI_IRQHandler(pin);
386396
}
387397
}
398+
#else /* STM32MP1xx */
399+
400+
/**
401+
* @brief This function handles external line 5 interrupt request.
402+
* @param None
403+
* @retval None
404+
*/
405+
void EXTI5_IRQHandler(void)
406+
{
407+
HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_5);
408+
}
409+
410+
/**
411+
* @brief This function handles external line 6 interrupt request.
412+
* @param None
413+
* @retval None
414+
*/
415+
void EXTI6_IRQHandler(void)
416+
{
417+
HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_6);
418+
}
419+
420+
/**
421+
* @brief This function handles external line 7 interrupt request.
422+
* @param None
423+
* @retval None
424+
*/
425+
void EXTI7_IRQHandler(void)
426+
{
427+
HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_7);
428+
}
429+
430+
/**
431+
* @brief This function handles external line 8 interrupt request.
432+
* @param None
433+
* @retval None
434+
*/
435+
void EXTI8_IRQHandler(void)
436+
{
437+
HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_8);
438+
}
439+
440+
/**
441+
* @brief This function handles external line 9 interrupt request.
442+
* @param None
443+
* @retval None
444+
*/
445+
void EXTI9_IRQHandler(void)
446+
{
447+
HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_9);
448+
}
449+
450+
/**
451+
* @brief This function handles external line 10 interrupt request.
452+
* @param None
453+
* @retval None
454+
*/
455+
void EXTI10_IRQHandler(void)
456+
{
457+
HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_10);
458+
}
459+
460+
/**
461+
* @brief This function handles external line 11 interrupt request.
462+
* @param None
463+
* @retval None
464+
*/
465+
void EXTI11_IRQHandler(void)
466+
{
467+
HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_11);
468+
}
469+
470+
/**
471+
* @brief This function handles external line 12 interrupt request.
472+
* @param None
473+
* @retval None
474+
*/
475+
void EXTI12_IRQHandler(void)
476+
{
477+
HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_12);
478+
}
479+
480+
/**
481+
* @brief This function handles external line 13 interrupt request.
482+
* @param None
483+
* @retval None
484+
*/
485+
void EXTI13_IRQHandler(void)
486+
{
487+
HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_13);
488+
}
489+
490+
/**
491+
* @brief This function handles external line 14 interrupt request.
492+
* @param None
493+
* @retval None
494+
*/
495+
void EXTI14_IRQHandler(void)
496+
{
497+
HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_14);
498+
}
499+
500+
/**
501+
* @brief This function handles external line 15 interrupt request.
502+
* @param None
503+
* @retval None
504+
*/
505+
void EXTI15_IRQHandler(void)
506+
{
507+
HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_15);
508+
}
388509

510+
#endif /* !STM32MP1xx */
389511
#ifdef __cplusplus
390512
}
391513
#endif

cores/arduino/stm32/lock_resource.h

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,9 @@
2323
/* Includes ------------------------------------------------------------------*/
2424
#include "stm32_def.h"
2525

26+
#ifdef __cplusplus
27+
extern "C" {
28+
#endif
2629

2730
/* Exported types ------------------------------------------------------------*/
2831
typedef enum {
@@ -42,8 +45,9 @@ typedef enum {
4245
LockResource_Status_t Periph_Lock(void *Peripheral, uint32_t Timeout);
4346
void Periph_Unlock(void *Peripheral);
4447

45-
46-
48+
#ifdef __cplusplus
49+
} // extern "C"
50+
#endif
4751

4852
#endif /* _LOCK_RESOURCE_H */
4953

0 commit comments

Comments
 (0)