Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
人间散章
rt-thread
提交
2f671012
R
rt-thread
项目概览
人间散章
/
rt-thread
与 Fork 源项目一致
Fork自
RT-Thread / rt-thread
通知
1
Star
1
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,发现更多精彩内容 >>
提交
2f671012
编写于
3月 24, 2021
作者:
G
guozhanxin
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[bsp][raspberry-pico]add uart1 support.
上级
baaf8187
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
137 addition
and
10 deletion
+137
-10
bsp/raspberry-pico/README.md
bsp/raspberry-pico/README.md
+10
-10
bsp/raspberry-pico/drivers/drv_uart.c
bsp/raspberry-pico/drivers/drv_uart.c
+127
-0
未找到文件。
bsp/raspberry-pico/README.md
浏览文件 @
2f671012
...
...
@@ -64,14 +64,14 @@ msh >
## Peripheral Condition
| Drive | Support | Remark |
| ----- | ------- | ------ |
| UART | Support | UART0
|
| GPIO | Support | 0-29 |
| I2C | - | - |
| RTC | - | - |
| SDIO | - | - |
| SPI | - | - |
| TIMER | - | - |
| WDT | - | - |
| Drive | Support | Remark
|
| ----- | ------- | ------
-
|
| UART | Support | UART0
/1
|
| GPIO | Support | 0-29
|
| I2C | - | -
|
| RTC | - | -
|
| SDIO | - | -
|
| SPI | - | -
|
| TIMER | - | -
|
| WDT | - | -
|
bsp/raspberry-pico/drivers/drv_uart.c
浏览文件 @
2f671012
...
...
@@ -153,3 +153,130 @@ int rt_hw_uart_init(void)
return
ret
;
}
// INIT_DEVICE_EXPORT(rt_hw_uart_init);
// We are using pins 0 and 1, but see the GPIO function select table in the
// datasheet for information on which other pins can be used.
#define UART1_TX_PIN 4
#define UART1_RX_PIN 5
static
struct
pico_uart1_dev
uart1_dev
;
struct
pico_uart1_dev
{
struct
rt_serial_device
parent
;
rt_uint32_t
uart_periph
;
rt_uint32_t
irqno
;
};
void
pico_uart1_isr
(
void
)
{
rt_interrupt_enter
();
/* read interrupt status and clear it */
if
(
uart_is_readable
(
uart1
))
/* rx ind */
{
rt_hw_serial_isr
(
&
uart1_dev
.
parent
,
RT_SERIAL_EVENT_RX_IND
);
}
rt_interrupt_leave
();
}
/*
* UART interface
*/
static
rt_err_t
pico_uart1_configure
(
struct
rt_serial_device
*
serial
,
struct
serial_configure
*
cfg
)
{
return
RT_EOK
;
}
static
rt_err_t
pico_uart1_control
(
struct
rt_serial_device
*
serial
,
int
cmd
,
void
*
arg
)
{
switch
(
cmd
)
{
/* enable interrupt */
case
RT_DEVICE_CTRL_SET_INT
:
// Set up a RX interrupt
// We need to set up the handler first
// And set up and enable the interrupt handlers
irq_set_exclusive_handler
(
UART1_IRQ
,
pico_uart1_isr
);
irq_set_enabled
(
UART1_IRQ
,
true
);
// Now enable the UART to send interrupts - RX only
uart_set_irq_enables
(
uart1
,
true
,
false
);
break
;
}
return
RT_EOK
;
}
static
int
pico_uart1_putc
(
struct
rt_serial_device
*
serial
,
char
c
)
{
uart_putc_raw
(
uart1
,
c
);
return
1
;
}
static
int
pico_uart1_getc
(
struct
rt_serial_device
*
serial
)
{
int
ch
;
if
(
uart_is_readable
(
uart1
))
{
ch
=
uart_get_hw
(
uart1
)
->
dr
;
}
else
{
ch
=-
1
;
}
return
ch
;
}
const
static
struct
rt_uart_ops
_uart1_ops
=
{
pico_uart1_configure
,
pico_uart1_control
,
pico_uart1_putc
,
pico_uart1_getc
,
RT_NULL
,
};
/*
* UART Initiation
*/
int
rt_hw_uart1_init
(
void
)
{
rt_err_t
ret
=
RT_EOK
;
struct
serial_configure
config
=
RT_SERIAL_CONFIG_DEFAULT
;
uart_init
(
uart1
,
115200
);
// Set the TX and RX pins by using the function select on the GPIO
// Set datasheet for more information on function select
gpio_set_function
(
UART1_TX_PIN
,
GPIO_FUNC_UART
);
gpio_set_function
(
UART1_RX_PIN
,
GPIO_FUNC_UART
);
// Actually, we want a different speed
// The call will return the actual baud rate selected, which will be as close as
// possible to that requested
uart_set_baudrate
(
uart1
,
BAUD_RATE
);
// Set UART flow control CTS/RTS, we don't want these, so turn them off
uart_set_hw_flow
(
uart1
,
false
,
false
);
// Set our data format
uart_set_format
(
uart1
,
DATA_BITS
,
STOP_BITS
,
PARITY
);
// Turn off FIFO's - we want to do this character by character
uart_set_fifo_enabled
(
uart1
,
false
);
uart1_dev
.
parent
.
ops
=
&
_uart1_ops
;
uart1_dev
.
parent
.
config
=
config
;
ret
=
rt_hw_serial_register
(
&
uart1_dev
.
parent
,
"uart1"
,
RT_DEVICE_FLAG_RDWR
|
RT_DEVICE_FLAG_INT_RX
,
&
uart1_dev
);
return
ret
;
}
INIT_DEVICE_EXPORT
(
rt_hw_uart1_init
);
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录