Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
_就这样_
drivers-for-mcu
提交
36e08198
D
drivers-for-mcu
项目概览
_就这样_
/
drivers-for-mcu
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
drivers-for-mcu
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
36e08198
编写于
3月 10, 2021
作者:
P
Prry
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
添加热电阻/热电偶驱动芯片AD7793程序.
上级
783bb3b8
变更
7
展开全部
隐藏空白更改
内联
并排
Showing
7 changed file
with
370 addition
and
58 deletion
+370
-58
README.md
README.md
+7
-6
driver/ad7793.c
driver/ad7793.c
+255
-0
driver/ad7793.h
driver/ad7793.h
+10
-0
project/Projects/MDK/Project.uvguix.acuity
project/Projects/MDK/Project.uvguix.acuity
+54
-27
project/Projects/MDK/Project.uvoptx
project/Projects/MDK/Project.uvoptx
+37
-25
project/Projects/MDK/Project.uvprojx
project/Projects/MDK/Project.uvprojx
+5
-0
project/Source/App/main.c
project/Source/App/main.c
+2
-0
未找到文件。
README.md
浏览文件 @
36e08198
...
...
@@ -24,15 +24,16 @@ Onewire | 模拟单总线 | IO模拟
外设 | 型号 | 原厂 | 接口 | 备注
--- | --- | --- | --- | ---
温度传感器 | LM75A | NXP | I2C
LED恒流驱动 | LP55231 | TI | I2C
EEPROM/FRAM | AT24Cxx | ATMEL | I2C
EEPROM | ST25AAXX | ST | SPI
温度传感器 | LM75A | NXP | I2C
|
LED恒流驱动 | LP55231 | TI | I2C
|
EEPROM/FRAM | AT24Cxx | ATMEL | I2C
|
EEPROM | ST25AAXX | ST | SPI
|
ADC | AD7684 | ADI | SPI | 3线SPI
步进电机驱动 | TMC2660 | TRINAMIC | SPI
步进电机驱动 | TMC2660 | TRINAMIC | SPI
|
温度传感器 | DS18B20 | MAXIM | Onewire|
DAC | AD5290 | ADI | SPI | 3线SPI
三轴加速度传感器 | LIS3DH | ST | I2C
三轴加速度传感器 | LIS3DH | ST | I2C |
热电阻/热电偶驱动芯片 | AD7793 | ADI | SPI |
4.
更新
-
...
...
driver/ad7793.c
0 → 100644
浏览文件 @
36e08198
#include <string.h>
#include "stm32f10x.h"
#include "ad7793.h"
/* ad7793寄存器 */
#define REG_COMM_STA 0x00
/* 8bit,写时为通讯寄存器/读时为状态寄存器 */
#define REG_MODE 0x08
/* 16bit,模式寄存器 */
#define REG_CONFIG 0x10
/* 16bit,配置寄存器 */
#define REG_DATA 0x18
/* 24bit,数据寄存器 */
#define REG_ID 0x20
/* 8bit,芯片ID寄存器 */
#define REG_IO 0x28
/* 8bit,IO寄存器 */
#define REG_IMBL 0x30
/* 24bit,失调寄存器 */
#define REG_FULL 0x38
/* 24bit,满量程寄存器 */
/* ad7793读写指令 */
#define READ_EN 0x40
/* 读使能 */
#define SINGLE_CONVER 0x2000
/* 单次转换 */
#define CONTINUE_CONVER 0x00
/* 连续转换 */
#define CONTINUE_READ 0x20
/* 连续读 */
/* 恒流源控制 */
#define CURRENT_OUT1_1 0x00
/* 两路电流正常输出到IO1、IO2 */
#define CURRENT_OUT1_2 0x04
/* 两路电流输出IO1、IO2互换 */
#define CURRENT_OUT1 0x08
/* 两路电流叠加输出到IO1,只对10uA和210uA有效 */
#define CURRENT_OUT2 0x0C
/* 两路电流叠加输出到IO2,只对10uA和210uA有效 */
#define CURRENT_10UA 0x01
/* 10uA电流 */
#define CURRENT_210UA 0x02
/* 210uA电流 */
#define CURRENT_1MA 0x03
/* 1mA电流 */
/* 配置寄存值 */
#define BIPOLAR 0x0000
/* 双极性 */
#define UNIPOLAR 0x1000
/* 单极性 */
#define GAIN_1 0x0000
/* 增益1~128 */
#define GAIN_2 0x0100
#define GAIN_4 0x0200
#define GAIN_8 0x0300
#define GAIN_16 0x0400
#define GAIN_32 0x0500
#define GAIN_64 0x0600
#define GAIN_128 0x0700
#define OUTER_VREF 0x0000
/* 外部参考源 */
#define INNER_VREF 0x0080
/* 内部参考源 */
#define NO_BUF 0x0000
/* 无缓存 */
#define USE_BUF 0x0010
/* 使用缓存 */
#define AIN_CH1 0x0000
/* 检测通道1~3 */
#define AIN_CH2 0x0001
#define AIN_CH3 0x0002
/* ad7793 工作模式选择 */
#define MODE_NONE 0x00
#define MODE_BIPOLAR 0x01
/* 双极性模式 */
#define MODE_UNIPOLAR 0x02
/* 单极性模式 */
#define MODE_2LINE_RTD 0x04
/* 两线RTD */
#define MODE_3LINE_RTD 0x08
/* 三线RTD */
#define MODE_4LINE_RTD 0x10
/* 四线RTD */
struct
_ad7793_info
{
uint8_t
mode
;
/* 工作模式 */
uint16_t
ref
;
/* 参考电阻阻值, Ω */
uint16_t
gain
;
/* 增益 */
uint8_t
id
;
/* 芯片id */
};
/* ad7793 spi device */
static
struct
spi_dev_device
ad7793_spi_dev
[
1
];
/* mode select */
static
struct
_ad7793_info
s_ad7793_info
=
{
.
mode
=
MODE_BIPOLAR
|
MODE_4LINE_RTD
,
/* 双精度/4线RTD */
.
ref
=
2000
,
/* 2kΩ */
.
gain
=
GAIN_1
,
};
static
void
ad7793_spi_cs
(
uint8_t
state
)
{
if
(
state
)
{
GPIO_SetBits
(
GPIOA
,
GPIO_Pin_1
);
}
else
{
GPIO_ResetBits
(
GPIOA
,
GPIO_Pin_1
);
}
}
static
uint8_t
ad7793_spi_write
(
uint8_t
addr
,
uint8_t
*
pbuf
,
uint8_t
size
)
{
spi_send_then_send
(
&
ad7793_spi_dev
[
0
],
&
addr
,
1
,
pbuf
,
size
);
return
size
;
}
static
uint8_t
ad7793_spi_write_byte
(
uint8_t
addr
,
uint8_t
data
)
{
ad7793_spi_write
(
addr
,
&
data
,
1
);
return
0x01
;
}
static
uint8_t
ad7793_spi_write_word
(
uint8_t
addr
,
uint16_t
data
)
{
uint8_t
buf
[
2
]
=
{
0
};
buf
[
0
]
=
(
data
>>
8
)
&
0xff
;
buf
[
1
]
=
data
&
0xff
;
ad7793_spi_write
(
addr
,
&
buf
[
0
],
2
);
return
0x02
;
}
static
uint8_t
ad7793_spi_write_3byte
(
uint8_t
addr
,
uint32_t
data
)
{
uint8_t
buf
[
3
]
=
{
0
};
buf
[
0
]
=
(
data
>>
16
)
&
0xff
;
buf
[
1
]
=
(
data
>>
8
)
&
0xff
;
buf
[
2
]
=
data
&
0xff
;
ad7793_spi_write
(
addr
,
&
buf
[
0
],
3
);
return
0x03
;
}
static
uint8_t
ad7793_spi_read
(
uint8_t
addr
,
uint8_t
*
pbuf
,
uint8_t
size
)
{
spi_send_then_recv
(
&
ad7793_spi_dev
[
0
],
&
addr
,
1
,
pbuf
,
size
);
return
size
;
}
static
void
ad7793_soft_reset
(
void
)
{
uint8_t
buf
[]
=
{
0xff
,
0xff
,
0xff
,
0xff
};
ad7793_spi_write
(
REG_COMM_STA
,
&
buf
[
0
],
4
);
}
static
void
ad7793_register_init
(
void
)
{
uint16_t
mode
=
0x00
;
/* read chip id */
ad7793_spi_read
(
REG_ID
,
&
s_ad7793_info
.
id
,
1
);
/* 65db抑 */
ad7793_spi_write_word
(
REG_MODE
,
0x000A
);
if
(
s_ad7793_info
.
mode
&
MODE_UNIPOLAR
)
{
mode
|=
MODE_UNIPOLAR
;
}
else
if
(
s_ad7793_info
.
mode
&
MODE_BIPOLAR
)
{
mode
|=
MODE_BIPOLAR
;
}
if
(
s_ad7793_info
.
gain
>
GAIN_128
)
{
s_ad7793_info
.
gain
=
GAIN_128
;
}
mode
|=
s_ad7793_info
.
gain
;
/* 双极性/无增益/外部参考源/无缓存/通道AIN1 */
ad7793_spi_write_word
(
REG_CONFIG
,
mode
|
OUTER_VREF
|
NO_BUF
|
AIN_CH1
);
/* 210uA恒流源输出 */
ad7793_spi_write_byte
(
REG_IO
,
CURRENT_OUT1_1
|
CURRENT_210UA
);
}
int8_t
ad7793_read_data
(
int32_t
*
ad_value
)
{
int8_t
ret
=
0
;
uint8_t
temp
=
0
;
uint8_t
buf
[
3
]
=
{
0
};
ad7793_spi_read
(
REG_COMM_STA
|
READ_EN
,
&
temp
,
1
);
/* 读取转换完成状态 */
if
(
0xbf
==
(
temp
|
0xbf
))
{
ad7793_spi_read
(
REG_DATA
|
READ_EN
,
&
buf
[
0
]
,
3
);
*
ad_value
=
(
buf
[
0
]
<<
16
)
|
(
buf
[
1
]
<<
8
)
|
buf
[
2
];
}
else
{
/* todo,出错? */
ret
=
-
1
;
}
return
ret
;
}
int8_t
ad7793_init
(
struct
spi_bus_device
*
spi_bus
)
{
GPIO_InitTypeDef
GPIO_InitStructure
;
if
(
NULL
==
spi_bus
)
{
return
-
1
;
}
/* spi cs */
GPIO_SetBits
(
GPIOA
,
GPIO_Pin_1
);
RCC_APB2PeriphClockCmd
(
RCC_APB2Periph_GPIOA
,
ENABLE
);
GPIO_InitStructure
.
GPIO_Pin
=
GPIO_Pin_1
;
GPIO_InitStructure
.
GPIO_Speed
=
GPIO_Speed_50MHz
;
GPIO_InitStructure
.
GPIO_Mode
=
GPIO_Mode_Out_PP
;
GPIO_Init
(
GPIOA
,
&
GPIO_InitStructure
);
GPIO_InitStructure
.
GPIO_Pin
=
GPIO_Pin_11
;
GPIO_InitStructure
.
GPIO_Speed
=
GPIO_Speed_50MHz
;
GPIO_InitStructure
.
GPIO_Mode
=
GPIO_Mode_Out_PP
;
GPIO_Init
(
GPIOA
,
&
GPIO_InitStructure
);
GPIO_SetBits
(
GPIOA
,
GPIO_Pin_11
);
/* device init */
ad7793_spi_dev
[
0
].
spi_cs
=
ad7793_spi_cs
;
ad7793_spi_dev
[
0
].
spi_bus
=
spi_bus
;
ad7793_soft_reset
();
ad7793_register_init
();
return
0
;
}
int8_t
ad7793_read_resistance
(
float
*
resistance
)
{
int8_t
ret
=
0
;
int32_t
ad_value
=
0
;
uint8_t
gain
=
0
;
if
(
0
!=
ad7793_read_data
(
&
ad_value
))
{
return
-
1
;
}
gain
=
0x01
<<
(
s_ad7793_info
.
gain
>>
8
);
/* 计算增益 */
/* 根据不同模式计算 */
if
(
s_ad7793_info
.
mode
&
MODE_BIPOLAR
)
{
*
resistance
=
(
float
)
s_ad7793_info
.
ref
*
(
ad_value
/
0x7fffff
-
1
)
/
gain
;
}
else
if
(
s_ad7793_info
.
mode
&
MODE_UNIPOLAR
)
{
*
resistance
=
(
float
)
s_ad7793_info
.
ref
*
ad_value
/
0xffffff
/
gain
;
}
if
(
s_ad7793_info
.
mode
&
MODE_3LINE_RTD
)
{
/* 三线RTD需要两路恒流源 */
*
resistance
*=
2
;
}
return
ret
;
}
driver/ad7793.h
0 → 100644
浏览文件 @
36e08198
#ifndef _AD7793_H_
#define _AD7793_H_
#include "spi_core.h"
extern
int8_t
ad7793_init
(
struct
spi_bus_device
*
spi_bus
);
extern
int8_t
ad7793_read_resistance
(
float
*
resistance
);
#endif
project/Projects/MDK/Project.uvguix.acuity
浏览文件 @
36e08198
此差异已折叠。
点击以展开。
project/Projects/MDK/Project.uvoptx
浏览文件 @
36e08198
...
...
@@ -432,6 +432,18 @@
<RteFlg>
0
</RteFlg>
<bShared>
0
</bShared>
</File>
<File>
<GroupNumber>
4
</GroupNumber>
<FileNumber>
16
</FileNumber>
<FileType>
1
</FileType>
<tvExp>
0
</tvExp>
<tvExpOptDlg>
0
</tvExpOptDlg>
<bDave2>
0
</bDave2>
<PathWithFileName>
..\..\..\driver\ad7793.c
</PathWithFileName>
<FilenameWithoutPath>
ad7793.c
</FilenameWithoutPath>
<RteFlg>
0
</RteFlg>
<bShared>
0
</bShared>
</File>
</Group>
<Group>
...
...
@@ -442,7 +454,7 @@
<RteFlg>
0
</RteFlg>
<File>
<GroupNumber>
5
</GroupNumber>
<FileNumber>
1
6
</FileNumber>
<FileNumber>
1
7
</FileNumber>
<FileType>
1
</FileType>
<tvExp>
0
</tvExp>
<tvExpOptDlg>
0
</tvExpOptDlg>
...
...
@@ -454,7 +466,7 @@
</File>
<File>
<GroupNumber>
5
</GroupNumber>
<FileNumber>
1
7
</FileNumber>
<FileNumber>
1
8
</FileNumber>
<FileType>
1
</FileType>
<tvExp>
0
</tvExp>
<tvExpOptDlg>
0
</tvExpOptDlg>
...
...
@@ -466,7 +478,7 @@
</File>
<File>
<GroupNumber>
5
</GroupNumber>
<FileNumber>
1
8
</FileNumber>
<FileNumber>
1
9
</FileNumber>
<FileType>
1
</FileType>
<tvExp>
0
</tvExp>
<tvExpOptDlg>
0
</tvExpOptDlg>
...
...
@@ -478,7 +490,7 @@
</File>
<File>
<GroupNumber>
5
</GroupNumber>
<FileNumber>
19
</FileNumber>
<FileNumber>
20
</FileNumber>
<FileType>
1
</FileType>
<tvExp>
0
</tvExp>
<tvExpOptDlg>
0
</tvExpOptDlg>
...
...
@@ -490,7 +502,7 @@
</File>
<File>
<GroupNumber>
5
</GroupNumber>
<FileNumber>
2
0
</FileNumber>
<FileNumber>
2
1
</FileNumber>
<FileType>
1
</FileType>
<tvExp>
0
</tvExp>
<tvExpOptDlg>
0
</tvExpOptDlg>
...
...
@@ -502,7 +514,7 @@
</File>
<File>
<GroupNumber>
5
</GroupNumber>
<FileNumber>
2
1
</FileNumber>
<FileNumber>
2
2
</FileNumber>
<FileType>
1
</FileType>
<tvExp>
0
</tvExp>
<tvExpOptDlg>
0
</tvExpOptDlg>
...
...
@@ -514,7 +526,7 @@
</File>
<File>
<GroupNumber>
5
</GroupNumber>
<FileNumber>
2
2
</FileNumber>
<FileNumber>
2
3
</FileNumber>
<FileType>
1
</FileType>
<tvExp>
0
</tvExp>
<tvExpOptDlg>
0
</tvExpOptDlg>
...
...
@@ -526,7 +538,7 @@
</File>
<File>
<GroupNumber>
5
</GroupNumber>
<FileNumber>
2
3
</FileNumber>
<FileNumber>
2
4
</FileNumber>
<FileType>
1
</FileType>
<tvExp>
0
</tvExp>
<tvExpOptDlg>
0
</tvExpOptDlg>
...
...
@@ -538,7 +550,7 @@
</File>
<File>
<GroupNumber>
5
</GroupNumber>
<FileNumber>
2
4
</FileNumber>
<FileNumber>
2
5
</FileNumber>
<FileType>
1
</FileType>
<tvExp>
0
</tvExp>
<tvExpOptDlg>
0
</tvExpOptDlg>
...
...
@@ -550,7 +562,7 @@
</File>
<File>
<GroupNumber>
5
</GroupNumber>
<FileNumber>
2
5
</FileNumber>
<FileNumber>
2
6
</FileNumber>
<FileType>
1
</FileType>
<tvExp>
0
</tvExp>
<tvExpOptDlg>
0
</tvExpOptDlg>
...
...
@@ -562,7 +574,7 @@
</File>
<File>
<GroupNumber>
5
</GroupNumber>
<FileNumber>
2
6
</FileNumber>
<FileNumber>
2
7
</FileNumber>
<FileType>
1
</FileType>
<tvExp>
0
</tvExp>
<tvExpOptDlg>
0
</tvExpOptDlg>
...
...
@@ -574,7 +586,7 @@
</File>
<File>
<GroupNumber>
5
</GroupNumber>
<FileNumber>
2
7
</FileNumber>
<FileNumber>
2
8
</FileNumber>
<FileType>
1
</FileType>
<tvExp>
0
</tvExp>
<tvExpOptDlg>
0
</tvExpOptDlg>
...
...
@@ -586,7 +598,7 @@
</File>
<File>
<GroupNumber>
5
</GroupNumber>
<FileNumber>
2
8
</FileNumber>
<FileNumber>
2
9
</FileNumber>
<FileType>
1
</FileType>
<tvExp>
0
</tvExp>
<tvExpOptDlg>
0
</tvExpOptDlg>
...
...
@@ -598,7 +610,7 @@
</File>
<File>
<GroupNumber>
5
</GroupNumber>
<FileNumber>
29
</FileNumber>
<FileNumber>
30
</FileNumber>
<FileType>
1
</FileType>
<tvExp>
0
</tvExp>
<tvExpOptDlg>
0
</tvExpOptDlg>
...
...
@@ -610,7 +622,7 @@
</File>
<File>
<GroupNumber>
5
</GroupNumber>
<FileNumber>
3
0
</FileNumber>
<FileNumber>
3
1
</FileNumber>
<FileType>
1
</FileType>
<tvExp>
0
</tvExp>
<tvExpOptDlg>
0
</tvExpOptDlg>
...
...
@@ -622,7 +634,7 @@
</File>
<File>
<GroupNumber>
5
</GroupNumber>
<FileNumber>
3
1
</FileNumber>
<FileNumber>
3
2
</FileNumber>
<FileType>
1
</FileType>
<tvExp>
0
</tvExp>
<tvExpOptDlg>
0
</tvExpOptDlg>
...
...
@@ -634,7 +646,7 @@
</File>
<File>
<GroupNumber>
5
</GroupNumber>
<FileNumber>
3
2
</FileNumber>
<FileNumber>
3
3
</FileNumber>
<FileType>
1
</FileType>
<tvExp>
0
</tvExp>
<tvExpOptDlg>
0
</tvExpOptDlg>
...
...
@@ -646,7 +658,7 @@
</File>
<File>
<GroupNumber>
5
</GroupNumber>
<FileNumber>
3
3
</FileNumber>
<FileNumber>
3
4
</FileNumber>
<FileType>
1
</FileType>
<tvExp>
0
</tvExp>
<tvExpOptDlg>
0
</tvExpOptDlg>
...
...
@@ -658,7 +670,7 @@
</File>
<File>
<GroupNumber>
5
</GroupNumber>
<FileNumber>
3
4
</FileNumber>
<FileNumber>
3
5
</FileNumber>
<FileType>
1
</FileType>
<tvExp>
0
</tvExp>
<tvExpOptDlg>
0
</tvExpOptDlg>
...
...
@@ -670,7 +682,7 @@
</File>
<File>
<GroupNumber>
5
</GroupNumber>
<FileNumber>
3
5
</FileNumber>
<FileNumber>
3
6
</FileNumber>
<FileType>
1
</FileType>
<tvExp>
0
</tvExp>
<tvExpOptDlg>
0
</tvExpOptDlg>
...
...
@@ -682,7 +694,7 @@
</File>
<File>
<GroupNumber>
5
</GroupNumber>
<FileNumber>
3
6
</FileNumber>
<FileNumber>
3
7
</FileNumber>
<FileType>
1
</FileType>
<tvExp>
0
</tvExp>
<tvExpOptDlg>
0
</tvExpOptDlg>
...
...
@@ -694,7 +706,7 @@
</File>
<File>
<GroupNumber>
5
</GroupNumber>
<FileNumber>
3
7
</FileNumber>
<FileNumber>
3
8
</FileNumber>
<FileType>
1
</FileType>
<tvExp>
0
</tvExp>
<tvExpOptDlg>
0
</tvExpOptDlg>
...
...
@@ -706,7 +718,7 @@
</File>
<File>
<GroupNumber>
5
</GroupNumber>
<FileNumber>
3
8
</FileNumber>
<FileNumber>
3
9
</FileNumber>
<FileType>
1
</FileType>
<tvExp>
0
</tvExp>
<tvExpOptDlg>
0
</tvExpOptDlg>
...
...
@@ -718,7 +730,7 @@
</File>
<File>
<GroupNumber>
5
</GroupNumber>
<FileNumber>
39
</FileNumber>
<FileNumber>
40
</FileNumber>
<FileType>
2
</FileType>
<tvExp>
0
</tvExp>
<tvExpOptDlg>
0
</tvExpOptDlg>
...
...
@@ -730,7 +742,7 @@
</File>
<File>
<GroupNumber>
5
</GroupNumber>
<FileNumber>
4
0
</FileNumber>
<FileNumber>
4
1
</FileNumber>
<FileType>
1
</FileType>
<tvExp>
0
</tvExp>
<tvExpOptDlg>
0
</tvExpOptDlg>
...
...
project/Projects/MDK/Project.uvprojx
浏览文件 @
36e08198
...
...
@@ -471,6 +471,11 @@
<FileType>
1
</FileType>
<FilePath>
..\..\..\driver\24clxx.c
</FilePath>
</File>
<File>
<FileName>
ad7793.c
</FileName>
<FileType>
1
</FileType>
<FilePath>
..\..\..\driver\ad7793.c
</FilePath>
</File>
</Files>
</Group>
<Group>
...
...
project/Source/App/main.c
浏览文件 @
36e08198
...
...
@@ -8,6 +8,7 @@
#include "ad5290.h"
#include "tmc2660.h"
#include "24clxx.h"
#include "ad7793.h"
struct
i2c_dev_device
i2c0
;
struct
spi_bus_device
spi_bus0
;
...
...
@@ -26,6 +27,7 @@ int main(void)
ee_25xx_init
(
&
spi_bus1
);
ad7684_init
(
&
spi_bus1
);
ad5290_init
(
&
spi_bus1
);
ad7793_init
(
&
spi_bus0
);
tmc2660_init
(
&
spi_bus0
);
ee_24clxx_init
(
&
i2c0
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录