AVR系列单片机的ADC驱动程序库,适合于AVR系列的多种CPU
上传时间: 2014-10-13
上传用户:Zxcvbnm
打印相关驱动配置文件和动态连接库,方便调用使用
上传时间: 2017-09-07
上传用户:jqy_china
关于STM32开发,首先是开发环境要配置好,本源码是基于KEIL5 软件开发编写,完全用库函数驱动管脚的IO电平。适合初学者快速入门,点亮LED灯观察效果。
上传时间: 2021-11-27
上传用户:
TB6612电机驱动模块TB6612模块ALTIUM设计硬件原理图+PCB+3D封装库文件,2层板设计,大小为18X18mm,双面布局布线,包括完整的原理图和PCB文件,可以做为你的设计参考。
标签: tb6612 电机驱动 altium designer
上传时间: 2022-01-23
上传用户:
基于STM32F103的晶联讯128*64LCD的库函数版本驱动,此源码可驱动JLX12864G-10902-PC带字库的LCD,字库驱动IC为ST7565R。软件中,采用串行接口方式,普通IO模拟SPI。
上传时间: 2022-04-26
上传用户:qingfengchizhu
IR2104S MOS管电机驱动板ad原理图+PCB+封装库文件,ad 设计的工程文件,包括原理图及PCB印制板图,可以用Altium Designer(AD)软件打开或修改,可作为你产品设计的参考。
上传时间: 2022-05-15
上传用户:fliang
STM32F0_HAL库驱动MPU6050源代码,此代码配置了MPU6050初始化函数,I2C由PB6、PB7口模拟输出,采集了MPU6050三个方向的加速度,三个角速度和温度值,并通过USART1将数据上传,其中前6个数据为数字量,温度为转换后的实际温度值(单位:摄氏度)
上传时间: 2022-07-07
上传用户:qingfengchizhu
附件是51mini仿真器中文使用手册,其中包括有51mini的驱动,USB安装指南及USB驱动程序。 2003 年 SST 公司推出了 SST89C54/58 芯片,并且在官方网站公布了单片机仿真程序,配合 KEIL 可以实现标 准 51 内核芯片的单步调试等等,从而实现了一个简单的 51 单片机仿真方案,将仿真器直接拉低到一颗芯片的价 格。 但是, 1 分钱 1 分货,这个仿真方案由于先天的缺陷存在若干重大问题: 占用 p30,p31 端口 占用定时器 2 占用 8 个 sp 空间 运行速度慢 最高通信速度只有 38400,无法运行 c 语言程序。(由于 c 语言程序会调用库文件,每单步一次 的时间足够你吃个早饭) 所以,网上大量销售的这种这种仿真器最多只能仿真跑马灯等简单程序,并没有实际使用价值。51mini 是深 圳市学林电子有限公司开发生产的具有自主知识产权的新一代专业仿真器,采用双 CPU 方案,一颗负责和 KEIL 解 释,另外一颗负责运行用户程序,同时巧妙利用 CPU 的 P4 口通信,释放 51 的 P30,P31,完美解决了上述问题, 体积更小,是目前价格最低的专业级别 51 单片机仿真器,足以胜任大型项目开发。 51mini仿真器创新设计: 1 三明治夹心双面贴片,体积缩小到只有芯片大小,真正的“嵌入式”结构。 2 大量采用最新工艺和器件,全贴片安装,进口钽电容,贴片电解。 3 采用快恢复保险,即便短路也可有效保护。 4 单 USB 接口,无需外接电源和串口,台式电脑、无串口的笔记本均适用。三 CPU 设计,采用仿真芯片+监控 芯片+USB 芯片结构,是一款真正独立的仿真器,不需要依赖开发板运行。 5 下载仿真通讯急速 115200bps,较以前版本提高一个数量级(10 倍以上),单步运行如飞。 6 不占资源,无限制真实仿真(32 个 IO、串口、T2 可完全单步仿真),真实仿真 32 条 IO 脚,包括任意使用 P30 和 P31 口。 7 兼容 keilC51 UV2 调试环境支持单步、断点、随时可查看寄存器、变量、IO、内存内容。可仿真各种 51 指 令兼容单片机,ATMEL、Winbond、INTEL、SST、ST 等等。可仿真 ALE 禁止,可仿真 PCA,可仿真双 DPTR,可仿真 硬件 SPI。媲美 2000 元级别专业仿真器! 8 独创多声响和 led 指示实时系统状态和自检。 9 独创长按复位键自动进入脱机运行模式,这时仿真机就相当于目标板上烧好的一个芯片,可以更加真实的运 行。这种情况下实际上就变了一个下载器,而且下次上电时仍然可以运行上次下载的程序。 USB 驱动的安装 第一步:用随机 USB 通讯电缆连接仪器的 USB 插座和计算机 USB口;显示找到新硬件向导,选择“从列表或指定位置安装(高级)”选项,进入下一步; 第二步:选择“在搜索中包括这个位置”,点击“浏览”,定位到配套驱动光盘的驱动程序文件夹,如 E:\驱动程序\XLISP 驱动程序\USBDRIVER2.0\,进入下一步; 第三步:弹出“硬件安装”对话框,如果系统提示“没有通过Windows 徽标测试…”,不用理会,点击“仍然继续”,向导即开始安装软件;然后弹出“完成找到新硬件向导”对话框,点击完成。 第四步:系统第二次弹出“找到新的硬件向导”对话框,重复以上几个步骤; 右下角弹出对话框“新硬件已安装并可以使用了”,表明 USB 驱动已成功安装。你可以进入系统的:控制面板\系统\硬件\设备管理器中看到以下端口信息, 表示系统已经正确的安装了 USB 驱动。
上传时间: 2013-11-02
上传用户:猫爱薛定谔
有两种方式可以让设备和应用程序之间联系:1. 通过为设备创建的一个符号链;2. 通过输出到一个接口WDM驱动程序建议使用输出到一个接口而不推荐使用创建符号链的方法。这个接口保证PDO的安全,也保证安全地创建一个惟一的、独立于语言的访问设备的方法。一个应用程序使用Win32APIs来调用设备。在某个Win32 APIs和设备对象的分发函数之间存在一个映射关系。获得对设备对象访问的第一步就是打开一个设备对象的句柄。 用符号链打开一个设备的句柄为了打开一个设备,应用程序需要使用CreateFile。如果该设备有一个符号链出口,应用程序可以用下面这个例子的形式打开句柄:hDevice = CreateFile("\\\\.\\OMNIPORT3", GENERIC_READ | GENERIC_WRITE,FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL ,NULL);文件路径名的前缀“\\.\”告诉系统本调用希望打开一个设备。这个设备必须有一个符号链,以便应用程序能够打开它。有关细节查看有关Kdevice和CreateLink的内容。在上述调用中第一个参数中前缀后的部分就是这个符号链的名字。注意:CreatFile中的第一个参数不是Windows 98/2000中驱动程序(.sys文件)的路径。是到设备对象的符号链。如果使用DriverWizard产生驱动程序,它通常使用类KunitizedName来构成设备的符号链。这意味着符号链名有一个附加的数字,通常是0。例如:如果链接名称的主干是L“TestDevice”那么在CreateFile中的串就该是“\\\\.\\TestDevice0”。如果应用程序需要被覆盖的I/O,第六个参数(Flags)必须或上FILE_FLAG_OVERLAPPED。 使用一个输出接口打开句柄用这种方式打开一个句柄会稍微麻烦一些。DriverWorks库提供两个助手类来使获得对该接口的访问容易一些,这两个类是CDeviceInterface, 和 CdeviceInterfaceClass。CdeviceInterfaceClass类封装了一个设备信息集,该信息集包含了特殊类中的所有设备接口信息。应用程序能有用CdeviceInterfaceClass类的一个实例来获得一个或更多的CdeviceInterface类的实例。CdeviceInterface类是一个单一设备接口的抽象。它的成员函数DevicePath()返回一个路径名的指针,该指针可以在CreateFile中使用来打开设备。下面用一个小例子来显示这些类最基本的使用方法:extern GUID TestGuid;HANDLE OpenByInterface( GUID* pClassGuid, DWORD instance, PDWORD pError){ CDeviceInterfaceClass DevClass(pClassGuid, pError); if (*pError != ERROR_SUCCESS) return INVALID_HANDLE_VALUE; CDeviceInterface DevInterface(&DevClass, instance, pError); if (*pError != ERROR_SUCCESS) return INVALID_HANDLE_VALUE; cout << "The device path is " << DevInterface.DevicePath() << endl; HANDLE hDev; hDev = CreateFile( DevInterface.DevicePath(), GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL ); if (hDev == INVALID_HANDLE_VALUE) *pError = GetLastError(); return hDev;} 在设备中执行I/O操作一旦应用程序获得一个有效的设备句柄,它就能使用Win32 APIs来产生到设备对象的IRPs。下面的表显示了这种对应关系。Win32 API DRIVER_FUNCTION_xxxIRP_MJ_xxx KDevice subclass member function CreateFile CREATE Create ReadFile READ Read WriteFile WRITE Write DeviceIoControl DEVICE_CONTROL DeviceControl CloseHandle CLOSECLEANUP CloseCleanUp 需要解释一下设备类成员的Close和CleanUp:CreateFile使内核为设备创建一个新的文件对象。这使得多个句柄可以映射同一个文件对象。当这个文件对象的最后一个用户级句柄被撤销后,I/O管理器调用CleanUp。当没有任何用户级和核心级的对文件对象的访问的时候,I/O管理器调用Close。如果被打开的设备不支持指定的功能,则调用相应的Win32将引起错误(无效功能)。以前为Windows95编写的VxD的应用程序代码中可能会在打开设备的时候使用FILE_FLAG_DELETE_ON_CLOSE属性。在Windows NT/2000中,建议不要使用这个属性,因为它将导致没有特权的用户企图打开这个设备,这是不可能成功的。I/O管理器将ReadFile和WriteFile的buff参数转换成IRP域的方法依赖于设备对象的属性。当设备设置DO_DIRECT_IO标志,I/O管理器将buff锁住在存储器中,并且创建了一个存储在IRP中的MDL域。一个设备可以通过调用Kirp::Mdl来存取MDL。当设备设置DO_BUFFERED_IO标志,设备对象分别通过KIrp::BufferedReadDest或 KIrp::BufferedWriteSource为读或写操作获得buff地址。当设备不设置DO_BUFFERED_IO标志也不设置DO_DIRECT_IO,内核设置IRP 的UserBuffer域来对应ReadFile或WriteFile中的buff参数。然而,存储区并没有被锁住而且地址只对调用进程有效。驱动程序可以使用KIrp::UserBuffer来存取IRP域。对于DeviceIoControl调用,buffer参数的转换依赖于特殊的I/O控制代码,它不在设备对象的特性中。宏CTL_CODE(在winioctl.h中定义)用来构造控制代码。这个宏的其中一个参数指明缓冲方法是METHOD_BUFFERED, METHOD_IN_DIRECT, METHOD_OUT_DIRECT, 或METHOD_NEITHER。下面的表显示了这些方法和与之对应的能获得输入缓冲与输出缓冲的KIrp中的成员函数:Method Input Buffer Parameter Output Buffer Parameter METHOD_BUFFERED KIrp::IoctlBuffer KIrp::IoctlBuffer METHOD_IN_DIRECT KIrp::IoctlBuffer KIrp::Mdl METHOD_OUT_DIRECT KIrp::IoctlBuffer KIrp::Mdl METHOD_NEITHER KIrp::IoctlType3InputBuffer KIrp::UserBuffer 如果控制代码指明METHOD_BUFFERED,系统分配一个单一的缓冲来作为输入与输出。驱动程序必须在向输出缓冲放数据之前拷贝输入数据。驱动程序通过调用KIrp::IoctlBuffer获得缓冲地址。在完成时,I/O管理器从系统缓冲拷贝数据到提供给Ring 3级调用者使用的缓冲中。驱动程序必须在结束前存储拷贝到IRP的Information成员中的数据个数。如果控制代码不指明METHOD_IN_DIRECT或METHOD_OUT_DIRECT,则DeviceIoControl的参数呈现不同的含义。参数InputBuffer被拷贝到一个系统缓冲,这个缓冲驱动程序可以通过调用KIrp::IoctlBuffer。参数OutputBuffer被映射到KMemory对象,驱动程序对这个对象的访问通过调用KIrp::Mdl来实现。对于METHOD_OUT_DIRECT,调用者必须有对缓冲的写访问权限。注意,对METHOD_NEITHER,内核只提供虚拟地址;它不会做映射来配置缓冲。虚拟地址只对调用进程有效。这里是一个用METHOD_BUFFERED的例子:首先,使用宏CTL_CODE来定义一个IOCTL代码:#define IOCTL_MYDEV_GET_FIRMWARE_REV \CTL_CODE (FILE_DEVICE_UNKNOWN,0,METHOD_BUFFERED,FILE_ANY_ACCESS)现在使用一个DeviceIoControl调用:BOOLEAN b;CHAR FirmwareRev[60];ULONG FirmwareRevSize;b = DeviceIoControl(hDevice, IOCTL_MYDEV_GET_VERSION_STRING, NULL, // no input 注意,这里放的是包含有执行操作命令的字符串指针 0, FirmwareRev, //这里是output串指针,存放从驱动程序中返回的字符串。sizeof(FirmwareRev),& FirmwareRevSize, NULL // not overlapped I/O );如果输出缓冲足够大,设备拷贝串到里面并将拷贝的资结束设置到FirmwareRevSize中。在驱动程序中,代码看起来如下所示:const char* FIRMWARE_REV = "FW 16.33 v5";NTSTATUS MyDevice::DeviceControl( KIrp I ){ ULONG fwLength=0; switch ( I.IoctlCode() ) { case IOCTL_MYDEV_GET_FIRMWARE_REV: fwLength = strlen(FIRMWARE_REV)+1; if (I.IoctlOutputBufferSize() >= fwLength) { strcpy((PCHAR)I.IoctlBuffer(),FIRMWARE_REV); I.Information() = fwLength; return I.Complete(STATUS_SUCCESS); } else { } case . . . } }
上传时间: 2013-10-17
上传用户:gai928943
Synapse串口同步库。功能有:它不是控件,而只是代码库。适合编写控制台应用服务或其它应用;不需要安装;读写数据的方法和Synapse提供的TTCPBlockSocket一样;支持MODEM的AT指令;支持RTS驱动的通讯(例如:RS-485适配器)。功能无限制。源代码:包含。适用语言:CB3 CB4 CB5 D2 D3 D4 D5
上传时间: 2014-12-03
上传用户:朗朗乾坤