Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Mozi
rt-thread
提交
bdc0e4f5
R
rt-thread
项目概览
Mozi
/
rt-thread
与 Fork 源项目一致
Fork自
RT-Thread / rt-thread
通知
0
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
rt-thread
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
bdc0e4f5
编写于
1月 08, 2019
作者:
H
HubretXie
提交者:
GitHub
1月 08, 2019
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[stm32][drv_gpio]增加对Stm32f0系列关中断处理方式
增加stm32f0系列GPIO关中断处理
上级
adfefdb0
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
70 addition
and
37 deletion
+70
-37
bsp/stm32/libraries/HAL_Drivers/drv_gpio.c
bsp/stm32/libraries/HAL_Drivers/drv_gpio.c
+70
-37
未找到文件。
bsp/stm32/libraries/HAL_Drivers/drv_gpio.c
浏览文件 @
bdc0e4f5
...
...
@@ -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
)
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录