Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
u010088926
rt-thread
提交
70738c37
R
rt-thread
项目概览
u010088926
/
rt-thread
与 Fork 源项目一致
Fork自
RT-Thread / rt-thread
通知
1
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,发现更多精彩内容 >>
提交
70738c37
编写于
1月 27, 2019
作者:
B
BalanceTWK
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[BSP] Fixed imxrt1050 gpio driver | 修复 imxrt1050 gpio 驱动
上级
92b1502e
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
45 addition
and
41 deletion
+45
-41
bsp/imxrt/Libraries/imxrt1050/drivers/drv_pin.c
bsp/imxrt/Libraries/imxrt1050/drivers/drv_pin.c
+45
-41
未找到文件。
bsp/imxrt/Libraries/imxrt1050/drivers/drv_pin.c
浏览文件 @
70738c37
...
...
@@ -222,9 +222,9 @@ void gpio_isr(GPIO_Type* base, rt_uint32_t gpio_pin)
{
if
((
GPIO_PortGetInterruptFlags
(
base
)
&
(
1
<<
gpio_pin
))
!=
0
)
{
GPIO_PortClearInterruptFlags
(
base
,
gpio_pin
);
if
(
rt1052_irq_map
[
gpio_pin
].
irq_info
.
hdr
!=
RT_NULL
)
GPIO_PortClearInterruptFlags
(
base
,
(
1
<<
gpio_pin
));
if
(
rt1052_irq_map
[
gpio_pin
].
irq_info
.
hdr
!=
RT_NULL
)
{
rt1052_irq_map
[
gpio_pin
].
irq_info
.
hdr
(
rt1052_irq_map
[
gpio_pin
].
irq_info
.
args
);
}
...
...
@@ -447,36 +447,36 @@ static void rt1052_pin_mode(rt_device_t dev, rt_base_t pin, rt_base_t mode)
{
case
PIN_MODE_OUTPUT
:
{
config_value
=
0x
1030U
;
gpio
.
direction
=
kGPIO_DigitalOutput
;
config_value
=
0x
0030U
;
/* Drive Strength R0/6 */
gpio
.
direction
=
kGPIO_DigitalOutput
;
}
break
;
break
;
case
PIN_MODE_INPUT
:
{
config_value
=
0x
1030U
;
gpio
.
direction
=
kGPIO_DigitalInput
;
config_value
=
0x
0830U
;
/* Open Drain Enable */
gpio
.
direction
=
kGPIO_DigitalInput
;
}
break
;
case
PIN_MODE_INPUT_PULLDOWN
:
{
config_value
=
0x
1030U
;
gpio
.
direction
=
kGPIO_DigitalInput
;
config_value
=
0x
3030U
;
/* 100K Ohm Pull Down */
gpio
.
direction
=
kGPIO_DigitalInput
;
}
break
;
break
;
case
PIN_MODE_INPUT_PULLUP
:
{
config_value
=
0x
5030U
;
gpio
.
direction
=
kGPIO_DigitalInput
;
config_value
=
0x
B030U
;
/* 100K Ohm Pull Up */
gpio
.
direction
=
kGPIO_DigitalInput
;
}
break
;
case
PIN_MODE_OUTPUT_OD
:
{
config_value
=
0x
1830U
;
gpio
.
direction
=
kGPIO_DigitalOutput
;
config_value
=
0x
0830U
;
/* Open Drain Enable */
gpio
.
direction
=
kGPIO_DigitalOutput
;
}
break
;
}
...
...
@@ -560,15 +560,14 @@ static rt_err_t rt1052_pin_irq_enable(struct rt_device *device, rt_base_t pin, r
{
gpio_pin_config_t
gpio
;
IRQn_Type
irq_num
;
rt_uint32_t
config_value
=
0x1b0a0
;
struct
rt1052_pin
*
pin_map
=
RT_NULL
;
struct
rt1052_irq
*
irq_map
=
RT_NULL
;
pin_map
=
&
rt1052_pin_map
[
pin
];
irq_map
=
&
rt1052_irq_map
[
rt1052_pin_map
[
pin
].
gpio_pin
];
if
(
pin_map
==
RT_NULL
||
irq_map
==
RT_NULL
)
rt_uint32_t
config_value
=
0
;
struct
rt1052_pin
*
pin_map
=
RT_NULL
;
struct
rt1052_irq
*
irq_map
=
RT_NULL
;
pin_map
=
&
rt1052_pin_map
[
pin
];
irq_map
=
&
rt1052_irq_map
[
rt1052_pin_map
[
pin
].
gpio_pin
];
if
(
pin_map
==
RT_NULL
||
irq_map
==
RT_NULL
)
{
return
RT_ENOSYS
;
}
...
...
@@ -589,13 +588,13 @@ static rt_err_t rt1052_pin_irq_enable(struct rt_device *device, rt_base_t pin, r
if
(
rt1052_pin_map
[
pin
].
gpio
!=
GPIO5
)
{
CLOCK_EnableClock
(
kCLOCK_Iomuxc
);
IOMUXC_SetPinMux
(
0x401F8010U
+
pin
*
4
,
0x5U
,
0
,
0
,
0
,
0
);
CLOCK_EnableClock
(
kCLOCK_Iomuxc
);
IOMUXC_SetPinMux
(
0x401F8010U
+
pin
*
4
,
0x5U
,
0
,
0
,
0
,
1
);
}
else
{
CLOCK_EnableClock
(
kCLOCK_IomuxcSnvs
);
IOMUXC_SetPinMux
(
0x400A8000U
+
(
pin
-
125
)
*
4
,
0x5U
,
0
,
0
,
0
,
0
);
CLOCK_EnableClock
(
kCLOCK_IomuxcSnvs
);
IOMUXC_SetPinMux
(
0x400A8000U
+
(
pin
-
125
)
*
4
,
0x5U
,
0
,
0
,
0
,
1
);
}
gpio
.
direction
=
kGPIO_DigitalInput
;
...
...
@@ -605,31 +604,36 @@ static rt_err_t rt1052_pin_irq_enable(struct rt_device *device, rt_base_t pin, r
{
case
PIN_IRQ_MODE_RISING
:
{
gpio
.
interruptMode
=
kGPIO_IntRisingEdge
;
config_value
=
0x3030U
;
/* 100K Ohm Pull Down */
gpio
.
interruptMode
=
kGPIO_IntRisingEdge
;
}
break
;
case
PIN_IRQ_MODE_FALLING
:
{
gpio
.
interruptMode
=
kGPIO_IntFallingEdge
;
config_value
=
0xB030U
;
/* 100K Ohm Pull Up */
gpio
.
interruptMode
=
kGPIO_IntFallingEdge
;
}
break
;
case
PIN_IRQ_MODE_RISING_FALLING
:
{
gpio
.
interruptMode
=
kGPIO_IntRisingOrFallingEdge
;
config_value
=
0x0830U
;
/* Open Drain Enable */
gpio
.
interruptMode
=
kGPIO_IntRisingOrFallingEdge
;
}
break
;
case
PIN_IRQ_MODE_HIGH_LEVEL
:
{
gpio
.
interruptMode
=
kGPIO_IntHighLevel
;
config_value
=
0x3030U
;
/* 100K Ohm Pull Down */
gpio
.
interruptMode
=
kGPIO_IntHighLevel
;
}
break
;
case
PIN_IRQ_MODE_LOW_LEVEL
:
{
gpio
.
interruptMode
=
kGPIO_IntLowLevel
;
config_value
=
0xB030U
;
/* 100K Ohm Pull Up */
gpio
.
interruptMode
=
kGPIO_IntLowLevel
;
}
break
;
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录