Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
BaiXuePrincess
rt-thread
提交
f1e34eef
R
rt-thread
项目概览
BaiXuePrincess
/
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看板
提交
f1e34eef
编写于
5月 11, 2013
作者:
B
Bernard Xiong
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #86 from grissiom/serial-rb-size
serial: use RT_SERIAL_RB_BUFSZ to define the size of ring buffer.
上级
94b7fee4
8e9e7f3e
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
15 addition
and
11 deletion
+15
-11
components/drivers/include/drivers/serial.h
components/drivers/include/drivers/serial.h
+8
-6
components/drivers/serial/serial.c
components/drivers/serial/serial.c
+7
-5
未找到文件。
components/drivers/include/drivers/serial.h
浏览文件 @
f1e34eef
...
...
@@ -10,7 +10,9 @@
* Change Logs:
* Date Author Notes
* 2012-05-15 lgnq first version.
* 2012-05-28 bernard chage interfaces
* 2012-05-28 bernard change interfaces
* 2013-02-20 bernard use RT_SERIAL_RB_BUFSZ to define
* the size of ring buffer.
*/
#ifndef __SERIAL_H__
...
...
@@ -43,9 +45,9 @@
#define NRZ_NORMAL 0
/* Non Return to Zero : normal mode */
#define NRZ_INVERTED 1
/* Non Return to Zero : inverted mode */
#
define UART_RX_BUFFER_SIZE 64
#define
UART_TX_BUFFER_SIZE
64
#
define SERIAL_RBUFFER_SIZE 64
#
ifndef RT_SERIAL_RB_BUFSZ
#define
RT_SERIAL_RB_BUFSZ
64
#
endif
#define RT_DEVICE_CTRL_CONFIG 0x03
/* configure device */
#define RT_DEVICE_CTRL_SET_INT 0x10
/* enable receive irq */
...
...
@@ -59,7 +61,7 @@
#define RT_SERIAL_ERR_FRAMING 0x02
#define RT_SERIAL_ERR_PARITY 0x03
#define RT_SERIAL_TX_DATAQUEUE_SIZE
40
#define RT_SERIAL_TX_DATAQUEUE_SIZE
2048
#define RT_SERIAL_TX_DATAQUEUE_LWM 30
/* Default config for serial_configure structure */
...
...
@@ -76,7 +78,7 @@
struct
serial_ringbuffer
{
rt_uint8_t
buffer
[
SERIAL_RBUFFER_SIZE
];
rt_uint8_t
buffer
[
RT_SERIAL_RB_BUFSZ
];
rt_uint16_t
put_index
,
get_index
;
};
...
...
components/drivers/serial/serial.c
浏览文件 @
f1e34eef
...
...
@@ -13,6 +13,8 @@
* 2012-05-15 lgnq modified according bernard's implementation.
* 2012-05-28 bernard code cleanup
* 2012-11-23 bernard fix compiler warning.
* 2013-02-20 bernard use RT_SERIAL_RB_BUFSZ to define
* the size of ring buffer.
*/
#include <rthw.h>
...
...
@@ -35,12 +37,12 @@ rt_inline void serial_ringbuffer_putc(struct serial_ringbuffer *rbuffer,
level
=
rt_hw_interrupt_disable
();
rbuffer
->
buffer
[
rbuffer
->
put_index
]
=
ch
;
rbuffer
->
put_index
=
(
rbuffer
->
put_index
+
1
)
&
(
SERIAL_RBUFFER_SIZE
-
1
);
rbuffer
->
put_index
=
(
rbuffer
->
put_index
+
1
)
&
(
RT_SERIAL_RB_BUFSZ
-
1
);
/* if the next position is read index, discard this 'read char' */
if
(
rbuffer
->
put_index
==
rbuffer
->
get_index
)
{
rbuffer
->
get_index
=
(
rbuffer
->
get_index
+
1
)
&
(
SERIAL_RBUFFER_SIZE
-
1
);
rbuffer
->
get_index
=
(
rbuffer
->
get_index
+
1
)
&
(
RT_SERIAL_RB_BUFSZ
-
1
);
}
/* enable interrupt */
...
...
@@ -56,7 +58,7 @@ rt_inline int serial_ringbuffer_putchar(struct serial_ringbuffer *rbuffer,
/* disable interrupt */
level
=
rt_hw_interrupt_disable
();
next_index
=
(
rbuffer
->
put_index
+
1
)
&
(
SERIAL_RBUFFER_SIZE
-
1
);
next_index
=
(
rbuffer
->
put_index
+
1
)
&
(
RT_SERIAL_RB_BUFSZ
-
1
);
if
(
next_index
!=
rbuffer
->
get_index
)
{
rbuffer
->
buffer
[
rbuffer
->
put_index
]
=
ch
;
...
...
@@ -87,7 +89,7 @@ rt_inline int serial_ringbuffer_getc(struct serial_ringbuffer *rbuffer)
if
(
rbuffer
->
get_index
!=
rbuffer
->
put_index
)
{
ch
=
rbuffer
->
buffer
[
rbuffer
->
get_index
];
rbuffer
->
get_index
=
(
rbuffer
->
get_index
+
1
)
&
(
SERIAL_RBUFFER_SIZE
-
1
);
rbuffer
->
get_index
=
(
rbuffer
->
get_index
+
1
)
&
(
RT_SERIAL_RB_BUFSZ
-
1
);
}
/* enable interrupt */
rt_hw_interrupt_enable
(
level
);
...
...
@@ -101,7 +103,7 @@ rt_inline rt_uint32_t serial_ringbuffer_size(struct serial_ringbuffer *rbuffer)
rt_base_t
level
;
level
=
rt_hw_interrupt_disable
();
size
=
(
rbuffer
->
put_index
-
rbuffer
->
get_index
)
&
(
SERIAL_RBUFFER_SIZE
-
1
);
size
=
(
rbuffer
->
put_index
-
rbuffer
->
get_index
)
&
(
RT_SERIAL_RB_BUFSZ
-
1
);
rt_hw_interrupt_enable
(
level
);
return
size
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录