|
@@ -544,6 +544,34 @@ static rt_err_t stm32_pin_irq_enable(struct rt_device *device, rt_base_t pin,
|
|
|
HAL_GPIO_DeInit(index->gpio, index->pin);
|
|
|
|
|
|
pin_irq_enable_mask &= ~irqmap->pinbit;
|
|
|
+#if defined(SOC_SERIES_STM32F0)
|
|
|
+ if (( irqmap->pinbit>=GPIO_PIN_0 )&&( irqmap->pinbit<=GPIO_PIN_1 ))
|
|
|
+ {
|
|
|
+ if(!(pin_irq_enable_mask&(GPIO_PIN_0|GPIO_PIN_1)))
|
|
|
+ {
|
|
|
+ HAL_NVIC_DisableIRQ(irqmap->irqno);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else if (( irqmap->pinbit>=GPIO_PIN_2 )&&( irqmap->pinbit<=GPIO_PIN_3 ))
|
|
|
+ {
|
|
|
+ if(!(pin_irq_enable_mask&(GPIO_PIN_2|GPIO_PIN_3)))
|
|
|
+ {
|
|
|
+ HAL_NVIC_DisableIRQ(irqmap->irqno);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else if (( irqmap->pinbit>=GPIO_PIN_4 )&&( irqmap->pinbit<=GPIO_PIN_15 ))
|
|
|
+ {
|
|
|
+ if(!(pin_irq_enable_mask&(GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7|GPIO_PIN_8|GPIO_PIN_9|
|
|
|
+ GPIO_PIN_10|GPIO_PIN_11|GPIO_PIN_12|GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15)))
|
|
|
+ {
|
|
|
+ HAL_NVIC_DisableIRQ(irqmap->irqno);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ HAL_NVIC_DisableIRQ(irqmap->irqno);
|
|
|
+ }
|
|
|
+#else
|
|
|
if (( irqmap->pinbit>=GPIO_PIN_5 )&&( irqmap->pinbit<=GPIO_PIN_9 ))
|
|
|
{
|
|
|
if(!(pin_irq_enable_mask&(GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7|GPIO_PIN_8|GPIO_PIN_9)))
|
|
@@ -561,12 +589,13 @@ static rt_err_t stm32_pin_irq_enable(struct rt_device *device, rt_base_t pin,
|
|
|
else
|
|
|
{
|
|
|
HAL_NVIC_DisableIRQ(irqmap->irqno);
|
|
|
- }
|
|
|
+ }
|
|
|
+#endif
|
|
|
rt_hw_interrupt_enable(level);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- return RT_ENOSYS;
|
|
|
+ return -RT_ENOSYS;
|
|
|
}
|
|
|
|
|
|
return RT_EOK;
|
|
@@ -594,6 +623,44 @@ void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
|
|
|
pin_irq_hdr(bit2bitno(GPIO_Pin));
|
|
|
}
|
|
|
|
|
|
+#if defined(SOC_SERIES_STM32F0)
|
|
|
+void EXTI0_1_IRQHandler(void)
|
|
|
+{
|
|
|
+ rt_interrupt_enter();
|
|
|
+ HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_0);
|
|
|
+ HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_1);
|
|
|
+ rt_interrupt_leave();
|
|
|
+}
|
|
|
+
|
|
|
+void EXTI2_3_IRQHandler(void)
|
|
|
+{
|
|
|
+ rt_interrupt_enter();
|
|
|
+ HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_2);
|
|
|
+ HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_3);
|
|
|
+ rt_interrupt_leave();
|
|
|
+}
|
|
|
+void EXTI4_15_IRQHandler(void)
|
|
|
+{
|
|
|
+ HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_0);
|
|
|
+ HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_1);
|
|
|
+ HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_2);
|
|
|
+ HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_3);
|
|
|
+ HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_4);
|
|
|
+ HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_5);
|
|
|
+ HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_6);
|
|
|
+ HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_7);
|
|
|
+ HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_8);
|
|
|
+ HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_9);
|
|
|
+ HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_10);
|
|
|
+ HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_11);
|
|
|
+ HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_12);
|
|
|
+ HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_13);
|
|
|
+ HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_14);
|
|
|
+ HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_15);
|
|
|
+}
|
|
|
+
|
|
|
+#else
|
|
|
+
|
|
|
void EXTI0_IRQHandler(void)
|
|
|
{
|
|
|
rt_interrupt_enter();
|
|
@@ -651,41 +718,7 @@ void EXTI15_10_IRQHandler(void)
|
|
|
HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_15);
|
|
|
rt_interrupt_leave();
|
|
|
}
|
|
|
-
|
|
|
-void EXTI0_1_IRQHandler(void)
|
|
|
-{
|
|
|
- rt_interrupt_enter();
|
|
|
- HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_0);
|
|
|
- HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_1);
|
|
|
- rt_interrupt_leave();
|
|
|
-}
|
|
|
-
|
|
|
-void EXTI2_3_IRQHandler(void)
|
|
|
-{
|
|
|
- rt_interrupt_enter();
|
|
|
- HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_2);
|
|
|
- HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_3);
|
|
|
- rt_interrupt_leave();
|
|
|
-}
|
|
|
-void EXTI4_15_IRQHandler(void)
|
|
|
-{
|
|
|
- HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_0);
|
|
|
- HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_1);
|
|
|
- HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_2);
|
|
|
- HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_3);
|
|
|
- HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_4);
|
|
|
- HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_5);
|
|
|
- HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_6);
|
|
|
- HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_7);
|
|
|
- HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_8);
|
|
|
- HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_9);
|
|
|
- HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_10);
|
|
|
- HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_11);
|
|
|
- HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_12);
|
|
|
- HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_13);
|
|
|
- HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_14);
|
|
|
- HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_15);
|
|
|
-}
|
|
|
+#endif
|
|
|
|
|
|
int rt_hw_pin_init(void)
|
|
|
{
|