




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、PC104-8210 双口智能 CAN 卡使用说明书科瑞科技28 号开源商务写字楼 212、213 室传真:科瑞科技地址:市海淀区:ht:100086Sales: Tech Support: li1 综述PC104-8210 智能卡是高性能的基于 PC104 PLUS 总线的通讯卡,为你的主板和 CAN总线连接提供了方便可靠的解决方案。PCI104 PLUS 总线符合 PCI2.1 标准,CAN 接口符合CAN2.0B 协议。卡上集成两个独立且的 CAN 总线数据通道,提高了在恶劣环境下工作的产品可靠性。支持 WIN98,WIN2000,WINXP 多种操作系统,同时提供 VC+的程序举例,方
2、便用户快速开发自己的应用程序。支持多卡工作,最多可支持 4 块卡在同一块主板上运行。2 技术参数 PCI104 PLUS 接口 :符合 PCI2.1 规范,支持 PNP; 数据器:FPGA集成 8KB 双口 RAM 作为数据缓冲区;CAN 控制器:NXP SJA1000T;CAN 传输器:PHILIPS PCA82C250;数据传输速率:可编程的传输速率,支持 5Kbps 到 1Mbps;CAN 通讯接口:采用 DB9;CAN 通讯协议:CAN2.0B 协议(PeliCAN),兼容 CAN2.0A 协议;电压:1000V ; 工作温度:0-70;板卡尺寸:标准 PC104 PLUS 板卡尺寸
3、96mm X 90mm;操作系统支持:WIN98,WIN2000/XP;3 硬件原理3.1 硬件原理框图卡上采用单片 FPGA 集成 PCI9052 核,双口 RAM 和单片机的控制功能,高集成度的设计提高了产品的可靠性。DB92PCI104 PLUS SLOTFPGASJA1000TCTM8251ATDB9SIA1000TCTM8251AT3.2主要连接器位置图J1 为 CAN0 连接器,J2 为 CAN1 连接器,SW1 和 SW2 为板卡 ID 选择,J3 为 CAN0终端匹配电阻跳线器,J4 为 CAN1 口终端匹配电阻跳线器。3.3硬件连接器,跳线和拨码开关说明DB9 连接器引脚定义
4、3引脚号信号功能2CAN_LCAN_L 信号7CAN_HCAN_H 信号3,6GND信号地5GND_SHIELD地1,4,8,9NC空脚3.3.2 终端匹配电阻跳线器说明卡上可通过跳线选择是否采用终结电阻,J3 为 CAN0 口的终结电阻跳线器,J4 为 CAN1口终结电阻的跳线器。如果采用终结电阻的话,须将加跳帽使能,如下图:J33.3.3 板卡拨码 ID 说明如果需要在一块主板上支持多卡,每块卡需要设置不同的 ID 号,一台机器最多可支持4 块卡,ID 号从 0 到 3,通过板上 SW1 和 SW2 可设置板卡的 ID 号。出厂 ID 的默认设置为0.SW1SW2出厂默认 ID 设置为 0
5、SW1SW2设置板卡 ID 为 1SW1SW2设置板卡 ID 为 24SW1SW2设置板卡 ID 为 34 CAN 总线连接节点 2节点 n节点 1CAN_H终结电 阻终结电阻 CAN_L为了提高 CAN 总线通讯的可靠性,每个 CAN 口都集成了一个 120 欧终端匹配电阻,终端匹配电阻的阻值是由 CAN 总线通讯电缆的阻抗来决定的,本卡的终端匹配电阻是按照双绞线的阻抗来决定的。可通过 J3 和 J4 的跳线来选择是否采用终端匹配电阻,在 CAN 通讯网络的首末节点时应采用终端匹配电阻来保证传输信号的可靠性。另外,请注意当传输距离超过 1公里时,传输电缆的线径应大于 1MM。传输电缆可采绞线
6、或带的双绞线。5 安装驱动程序为了确保任何时候安装都可以正确指定相应的驱动程序,请严格按照以下步骤进行安装处理。如果PC104-8210智能卡已经装好,则在重启操作系统后一般都会提示发现新硬件,如下图所示,此时应该选择“从列表或指定位置安装(高级)”,然后单击“下一步”,5图 5-1 欢迎使用找到新硬件向导当出现如下所示的框,选择“不要搜索,我要自己选择要安装的驱动程序”项然后单击“下一步”,图 5-2 请选择你的搜索和安装选项当出现“选择要为此硬件安装的设备驱动程序”框时,单击“型号”栏中的空白处,暂时不选中任何型号,接着单击“从磁盘安装”按钮以指定PC104-8210驱动文件目录位置。当出
7、现如下所示框时,可以通过“浏览”按键找到驱动程序的 inf 文件。6图 5-3 从磁盘安装查找文件,选中相应文件“PC104-8210.inf ”后单击“打开”。当出现再次出现”从磁盘安装”框并确定(目录正确后目录不对的话必须单击“上一步”重新查找到对为止),单击“确定”键,接着如下图所示,这时才选中相应的板卡型号,确定选中正确型号后单击“下一步”,图 5-3 选择要为此硬件安装的设备驱动程序如果安装过程没有出现任何错误,最后应该出现”完成找到新硬件向导”框,单击“完成”就可以了。安装成功后“设备管理器”中将列出所安装的PC104-8210。下图为安装完成1块PC104-8210智能卡后的设备
8、管理器界面。7图 5-4 Win XP 的设备管理器需要注意的是;任何时候安装都要尽可能手工选择,而不要使用自动安装。6接口函数PC104-8210智能卡采用WDM驱动程序,支持WIN98、WIN2000、WinXP操作系统,支持一机多卡;同时提供完整VC+开发例程示范代码,用户进行开发。6.1 接口卡设备类型定义接口卡的类型定义如下:设备名称: PC104-8210设备类型号: 116.2 错误码定义8名称值描述ERR_CAN_OVERFLOW0 x00000001CAN控制器FIFO溢出ERR_CAN_ERRALARM0 x00000002CAN控制器错误ERR_CAN_PASSIVE0
9、x00000004CAN控制器消极错误6.3 函数库中的数据结构定义VCI_BOARD_INFO描述VCI_BOARD_INFO结构体包含接口卡的设备信息。结构体将在VCI_ReadBoardInfo函数中被填充。typedef struct _VCI_BOARD_INFO USHORT hw_Ver USHORT fw_Ver USHORT dr_Ver USHORT in_Ver USHORT irq_Num; BYTE can_Num;CHAR str_Serial_Num20; CHAR str_hw_Type40;USHORT4; VCI_BOARD_INFO, *PVCI_BOAR
10、D_INFO;成员hw_Ver硬件版本号,用16进制表示。比如0 x0100表示V1.00。fw_Ver固件版本号,用16进制表示。dr_Ver驱动程序版本号,用16进制表示。in_Ver接口库版本号,用16进制表示。irq_Num板卡所使用的中断号。can_Num表示有几路CAN通道。str_Serial_Num此板卡的序列号。str_hw_Type硬件类型,比如“Double CAN V1.00”(注意:包括字符串结束符0)。系统保留。9ERR_CAN_LOSE0 x00000008CAN控制器仲裁丢失ERR_CAN_BUSERR0 x00000010CAN控制器总线错误ERR_DEVIC
11、EOPENED0 x00000100设备已经打开ERR_DEVICEOPEN0 x00000200打开设备错误ERR_DEVICENOTOPEN0 x00000400设备没有打开ERR_BUFFEROVERFLOW0 x00000800缓冲区溢出ERR_DEVICENOTEXIST0 x00001000此设备不存在VCI_CAN_OBJ描述VCI_CAN_OBJ结构体在VCI_Transmit和VCI_Receive函数中被用来传送CAN信息帧。 typedef struct _VCI_CAN_OBJ U UID;TimeSt;BYTE TimeFlag; BYTE SendType; BYT
12、E RemoteFlag; BYTE ExternFlag; BYTE DataLen; BYTE Data8;BYTE3; VCI_CAN_OBJ, *PVCI_CAN_OBJ;成员ID报文ID。TimeSt接收到信息帧时的时间标识,用于区别相同的帧。TimeFlag是否使用时间标识,为1时TimeSt有意义。SendType有效,TimeFlag和TimeSt只在此帧为接收帧时发送帧类型,=0时为正常发送,=1时为单次发送,=2时为自发自收,=3时为单次自发自收,只在此帧为发送帧时有意义。RemoteFlag是否是ExternFlag帧。是否是扩展帧。DataLen数据长度(AccCode
13、AccCode对应SJA1000中的四个寄存器ACR0,ACR1,ACR2,ACR3,其中高字节对应ACR0,低字节对应ACR3;AccMask对应SJA1000中的四个寄存器 AMR0,AMR1,AMR2,AMR3,其中高字节对应AMR0,低字节对应AMR3。(请看表后说明)pInitConfig-AccMaskpInitConfig-保留pInitConfig-Filter滤波方式,1表示单滤波,0表示双滤波pInitConfig-Timing0定时器0pInitConfig-Timing1定时器1pInitConfig-Mode模式,0表示正常模式,1表示只听模式RTR对应VCI_CAN
14、_OBJ中的RemoteFlag当滤波方式为单滤波,接收帧为扩展帧时:15当滤波方式为双滤波,接收帧为标准帧时:16当滤波方式为双滤波,接收帧为扩展帧时:返回值为1表示操作成功,0表示操作失败。示例#include ControlCan.h nDeviceType = 11;nDeviceInd = 0;nCANInd = 0; VCI_INIT_CONFIG vic;DWORD dwRel;dwRel = VCI_OpenDevice(nDeviceType, nDeviceInd, n);if (dwRel != SUS_OK)MessageBox(_T(打开设备失败!), _T(警告),
15、 MB_OK|MB_ICONQUESTION); return FALSE;17dwRel = VCI_InitCAN(nDeviceType, nDeviceInd, nCANInd, &vic);if (dwRel = SUS_ERR)VCI_CloseDevice(nDeviceType, nDeviceInd);MessageBox(_T(初始化设备失败!), _T(警告), MB_OK|MB_ICONQUESTION); return FALSE;VCI_ReadBoardInfo描述此函数用以获取设备信息。DWORDstdcallVCI_ReadBoardInfo(DWORDDev
16、Type,DWORDDevIndex,PVCI_BOARD_INFO pInfo);参数DevType设备类型号。DevIndex拨码ID。pInfo用来返回值设备信息的VCI_BOARD_INFO结构指针。为1表示操作成功,0表示操作失败。示例#include ControlCan.h nDeviceType = 11;nDeviceInd = 0;nCANInd = 0; VCI_INIT_CONFIG vic; VCI_BOARD_INFO vbi;DWORD dwRel;bRel = VCI_ReadBoardInfo(nDeviceType, nDeviceInd, nCANInd,
17、 &vbi);VCI_ReadErrInfo描述此函数用以获取最后一次错误信息。DWORD stdcall VCI_ReadErrInfo(DWORD DevType, DWORD DevIndex, CANIndex, PVCI_ERR_INFO pErrInfo);参数DevType设备类型号。DWORD18DevIndex拨码ID。CANIndex第几路CAN。pErrInfo用来错误信息的VCI_ERR_INFO结构指针。返回值为1表示操作成功,0表示操作失败。备注当(PErrInfo-ErrCode&0 x0004)=0 x0004时,存在CAN控制器消极错误。PErrInfo-Pa
18、ssive_ErrData0错误代码捕捉位功能表示。错误代码类型功能说明错误属性bit5 =0; 表示发送时发生的错误。=1; 表示接收时发生的错误。错误段表示功能说明:19bit4bit 3bit 2bit 1bit 0功能00011帧开始00010ID.28-ID.2100110ID.20-ID.18位ECC.7位ECC.6功能00位错01格式错10填充错11其它错误Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0错误代码类型错误属性错误段表示ErrCodePassive_ErrDataArLost_ErrData错误描述0 x0100无无设备已经打开0 x0200无无打开
19、设备错误0 x0400无无设备没有打开0 x0800无无缓冲区溢出0 x1000无无此设备不存在0 x2000无无装载动态库失败0 x4000无无表示为执行命令失败错误0 x0001无无CAN控制器FIFO溢出0 x0002无无CAN控制器错误0 x0004有,具体值见表后无CAN控制器消极错误0 x0008无有,具体值见表后CAN控制器仲裁丢失0 x0010无无CAN控制器总线错误PErrInfo-Passive_ErrData1 表示接收错误计数器PErrInfo-Passive_ErrData2 表示发送错误计数器当(PErrInfo-ErrCode&0 x0008)=0 x0008时,
20、存在CAN控制器仲裁丢失错误。PErrInfo-ArLost_ErrData仲裁丢失代码捕捉位功能表示错误段表示功能表示20位十进制值功能ALC.4ALC.3ALC.2ALC.1ALC.0000000仲裁丢失在识别码的bit1000011仲裁丢失在识别码的bit2000102仲裁丢失在识别码的bit3000113仲裁丢失在识别码的bit4001004仲裁丢失在识别码的bit5001015仲裁丢失在识别码的bit6001106仲裁丢失在识别码的bit7001117仲裁丢失在识别码的bit8010008仲裁丢失在识别码的bit9010019仲裁丢失在识别码的bit10Bit7Bit6Bit5Bit
21、4Bit3Bit2Bit1Bit0错误段表示00100SRTR位00101IDE位00111ID.17-ID.1301111ID.12-ID.501110ID.4-ID.001100RTR位01101保留位101001保留位001011数据长度代码01010数据区01000CRC序列11000CRC定义符11001应答通道11011应答定义符11010帧结束10010中止10001活动错误标志10110消极错误标志10011支配(控制)位误差10111错误定义符11100溢出标志示例DWORD dwRel;bRel = VCI_ReadErrInfo(nDeviceType, nDeviceI
22、nd, nCANInd, &vei);VCI_ReadCanS描述us此函数用以获取CAN状态。DWORD stdcall VCI_ReadCanSus(DWORD DevType, DWORDDevIndex, DWORDCANIndex, PVCI_CAN_S参数DevType设备类型号。DevIndex拨码ID。CANIndex第几路CAN。US pCANSus);pCANS用来返回值usCAN状态的VCI_CAN_SUS结构指针。为1表示操作成功,0表示操作失败。210101010仲裁丢失在识别码的bit110101111仲裁丢失在SRTR位0110012仲裁丢失在IDE位011011
23、3仲裁丢失在识别码的bit120111014仲裁丢失在识别码的bit130111115仲裁丢失在识别码的bit141000016仲裁丢失在识别码的bit151000117仲裁丢失在识别码的bit161001018仲裁丢失在识别码的bit171001119仲裁丢失在识别码的bit181010020仲裁丢失在识别码的bit191010121仲裁丢失在识别码的bit201011022仲裁丢失在识别码的bit211011123仲裁丢失在识别码的bit221100024仲裁丢失在识别码的bit231100125仲裁丢失在识别码的bit241101026仲裁丢失在识别码的bit251101127仲裁丢失在
24、识别码的bit261110028仲裁丢失在识别码的bit271110129仲裁丢失在识别码的bit281111030仲裁丢失在识别码的bit291111131仲裁丢失在ERTR位示例#include ControlCan.h nDeviceType = 11;nDeviceInd = 0;nCANInd = 0; VCI_INIT_CONFIG vic;VCI_CAN_SDWORD dwRel;US vcs;bRel = VCI_ReadCANSus(nDeviceType, nDeviceInd, nCANInd, &vcs);VCI_GetReference描述此函数用以获取设备的相应参数
25、。DWORD stdcall VCI_GetReference(DWORD CANIndex, DWORD RefType, PVOID pData);参数DevType设备类型号。DevIndex拨码ID。CANIndex第几路CAN。RefType参数类型。pDataDevType,DWORDDevIndex,DWORD用来返回值参数有关数据缓冲区地址首指针。为1表示操作成功,0表示操作失败。备注示例#include ControlCan.h nDeviceType = 11;nDeviceInd = 0;nCANInd = 0; UCHAR info2;22(1) 当设备类型为PC104
26、-8210: RefTypepData功能描述1 1总长度为2个字节,pData0 表示CAN控制器的控制寄存器的地址,pData1表示要读出CAN控制器的控制寄存器的值。CAN某个寄存器的值。例如要地址为9的寄存器值:UCHAR pData2 = 9,0;VCI_GetReference(DeviceType,DeviceI nd,CANInd,1,pData);如果调用成功,pData1将存放读出的值。DWORD dwRel; info0 = 1;bRel = VCI_GetReference(nDeviceType, nDeviceInd, nCANInd, 1, (PVOID)info
27、);VCI_SetReference描述此函数用以设置设备的相应参数,主要处理不同设备的特定操作。 DWORD stdcall VCI_SetReference(DWORD DevType, DWORD CANIndex, DWORD RefType, PVOID pData);参数DevType设备类型号。DevIndex拨码ID。CANIndex第几路CAN。RefType参数类型。pDataDevIndex,DWORD用来返回值参数有关数据缓冲区地址首指针。为1表示操作成功,0表示操作失败。备注VCI_SetReference和VCI_GetReference这两个函数是用来针对各个不同
28、设备的一些特定操作的。示例#include ControlCan.h nDeviceType = 11;nDeviceInd = 0;nCANInd = 0; UCHAR info2; DWORD dwRel; info0 = 1;info1 = 2;bRel = VCI_SetReference(nDeviceType, nDeviceInd, nCANInd, 1, (PVOID)baud);23当设备类型为PC104-8210,RefTypepData功能描述11总长度为2个字节,pData0表示CAN控制器的控制寄存器的地址,pData1 表示要写入的数值。写CAN控制器的指定控制寄存
29、器VCI_GetReceiveNum描述此函数用以获取指定接收缓冲区中接收到但尚未被的帧数。ULONG stdcall VCI_GetReceiveNum(DWORD DevType, DWORD CANIndex);参数DevType设备类型号。DevIndex拨码ID。CANIndex第几路CAN。返回值DevIndex,DWORD返回尚未被示例的帧数。#include ControlCan.h nDeviceType = 11;nDeviceInd = 0;nCANInd = 0; DWORD dwRel;bRel = VCI_GetReceiveNum(nDeviceType, nDe
30、viceInd, nCANInd);VCI_ClearBuffer描述此函数用以清空指定缓冲区。DWORD stdcall VCI_ClearBuffer(DWORD CANIndex);参数DevType设备类型号。DevIndex拨码ID。CANIndex第几路CAN。返回值为1表示操作成功,0表示操作失败。示例#include ControlCan.h nDeviceType = 11;nDeviceInd = 0;nCANInd = 0; DWORD dwRel;DevType, DWORDDevIndex,DWORDbRel = VCI_ClearBuffer(nDeviceType
31、, nDeviceInd, nCANInd);24VCI_StartCAN描述此函数用以启动CAN。DWORDstdcallVCI_StartCAN(DWORD CANIndex);参数DevType设备类型号。DevIndex拨码ID。CANIndex第几路CAN。返回值为1表示操作成功,0表示操作失败。示例#include ControlCan.h nDeviceType =1 1;nDeviceInd = 0;nCANInd = 0;DevType,DWORDDevIndex,DWORDVCI_INIT_CONFIGDWORD dwRel;vic;dwRel = VCI_OpenDevi
32、ce(nDeviceType, nDeviceInd, n);if (dwRel != SUS_OK)MessageBox(_T(打开设备失败!), _T(警告), MB_OK|MB_ICONQUESTION); return FALSE;dwRel = VCI_InitCAN(nDeviceType, nDeviceInd, nCANInd, &vic);if (dwRel = SUS_ERR)VCI_CloseDevice(nDeviceType, nDeviceInd);MessageBox(_T(初始化设备失败!), _T(警告), MB_OK|MB_ICONQUESTION); re
33、turn FALSE;dwRel = VCI_StartCAN(nDeviceType, nDeviceInd, nCANInd);if (dwRel = SUS_ERR)VCI_CloseDevice(nDeviceType, nDeviceInd);MessageBox(_T(启动设备失败!), _T(警告), MB_OK|MB_ICONQUESTION); return FALSE;25VCI_ResetCAN描述此函数用以复位CAN。DWORD stdcallVCI_ResetCAN(DWORD CANIndex);参数DevType设备类型号。DevIndex拨码ID。CANInde
34、x第几路CAN。返回值为1表示操作成功,0表示操作失败。示例#include ControlCan.h nDeviceType = 11;nDeviceInd = 0;nCANInd = 0; DWORD dwRel;DevType,DWORDDevIndex,DWORDbRel = VCI_ResetCAN(nDeviceType, nDeviceInd, nCANInd);VCI_Transmit描述返回实际发送的帧数。ULONG stdcallVCI_Transmit(DWORDDevType,DWORDDevIndex,DWORDCANIndex, PVCI_CAN_OBJ pSend
35、, ULONG Len);参数DevType设备类型号。DevIndex拨码ID。CANIndex第几路CAN。pSend要发送的数据帧数组的首指针。Len要发送的数据帧数组的长度。返回值返回实际发送的帧数。示例#include ControlCan.h #include 26nDeviceType = 11;nDeviceInd = 0;nCANInd = 0; DWORD dwRel; VCI_CAN_OBJ vco;ZeroMemory(&vco, sizeof (VCI_CAN_OBJ); vco.ID = 0 x00000000;vco.SendType = 0;vco.Remote
36、Flag = 0;vco.ExternFlag = 0;vco.DataLen = 8;lRet = VCI_Transmit(nDeviceType, nDeviceInd, nCANInd, &vco, i);VCI_Receive描述此函数从指定的设备数据。ULONG stdcall VCI_Receive(DWORD DevType, DWORD DevIndex, DWORD CANIndex,PVCI_CAN_OBJ pReceive, ULONG Len,参数DevType设备类型号。DevIndex拨码ID。CANIndex第几路CAN。pReceive用来接收的数据帧数组的首
37、指针。Len用来接收的数据帧数组的长度。WaitTimeWaitTime=1);等待超时时间,以毫秒为返回值。返回实际示例到的帧数。#include ControlCan.h #include nDeviceType = 11;nDeviceInd = 0;nCANInd = 0; DWORD dwRel; VCI_CAN_OBJ vco100;lRet = VCI_Receive(nDeviceType, nDeviceInd, nCANInd, vco, 100, 0);276.5 接口库函数使用方法首先,把库函数文件都放在工作目录下。库函数文件总共有三个文件:ControlCAN.h、C
38、ontrolCAN.lib、ControlCAN.dll。 VC调用动态库的方法(1)在扩展名为.CPP的文件中包含ControlCAN.h头文件。如:#include “ControlCAN.h”在工程的连接器设置中连接到ControlCAN.lib文件。如:在VC6环境下,在项目属性页里的配置属性连接器输入附加依赖项中添加ControlCAN.lib(2)286.6接口库函数使用流程接口库函数使用流程图29VCI_CloseDeviceVCI_ReceiveVCI_TransmitVCI_ResetCANVCI_SetReferenceVCI_GetReferenceVCI_ClearBufferVCI_GetReceiveNumVCI_ReadCanSu
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 房屋漏水赔偿协议书
- 厂房电气安装合同
- 学校保安人员聘任合同书
- 建筑公司保密协议书
- 农资供应与采购合同
- 外脚手架的承包合同书
- 可研报告咨询合同
- 承包饭店早点合同
- 工程防水施工合同
- 15年个人借款合同7篇
- 2024版《糖尿病健康宣教》课件
- 新员工三级安全教育考试试题参考答案
- 数学史简介课件可编辑全文
- 水痘护理查房课件
- 2024年各地中考语文卷【综合性学习题】汇集练附答案解析
- 基于CiteSpace患者旅程地图的研究热点与发展趋势分析
- 江苏省徐州市经济开发区2023-2024学年小升初数学自主招生备考卷含解析
- 中国高血压防治指南(2024年修订版)解读-概述
- 高层住宅室内精装修施工组织设计
- 《临安春雨初霁》课件+2023-2024学年统编版高中语文选择性必修下册
- 2024年高考作文素材积累之6个议论文人物素材及运用示例
评论
0/150
提交评论