STM32 虚拟串口win7(64位)或XP驱动
奋斗STM32开发板Tiny NRF24L01转USB虚拟串口例程手册
![奋斗STM32开发板Tiny NRF24L01转USB虚拟串口例程手册](https://img.taocdn.com/s3/m/436bcfd250e2524de5187e78.png)
奋斗版 STM32 开发板例程手册———NRF24L01+转 USB 虚拟串口实验NRF24L01+转 USB 虚拟串口实验实验平台:奋斗版STM32开发板Tiny 实验内容:板子通过USB加电后,先向串口1输出一串测试数据,然后USB被PC识 别出来,虚拟出一个串口号给这个USB设备,此时可以通过在PC端的串口助手类 软件选择该串口号。
进入串口软件界面,可以通过软件无线收发一帧长度最长 为32字节的数据。
该例程可以和V3及MINI板的NRF24L01 UCGUI例程配合使用。
预先需要掌握的知识 2.4G通信模块NRF24L01 1. 产品特性2.4GHz 全球开放ISM 频段,最大0dBm 发射功率,免许可证使用 支持六路通道的数据接收 低工作电压:1.9 1.9~3.6V 低电压工作 高速率:2Mbps,由于空中传输时间很短,极大的降低了无线传输中的碰撞现象(软件设置1Mbps或者2Mbps的空中传输速率) 多频点:125 频点,满足多点通信和跳频通信需要 超小型:内置2.4GHz天线,体积小巧,15x29mm(包括天线) 低功耗:当工作在应答模式通信时,快速的空中传输及启动时间,极大的降低了电流消耗。
低应用成本:NRF24L01 集成了所有与RF协议相关的高速信号处理部分,比如:自动重发丢失数据包和自动产生应答信号等, NRF24L01的SPI接口可以利用单片机的硬件SPI口连接或用单片机I/O口进行模拟,内部有FIFO可以与各种高低速微处理器接口, 便于使用低成本单片机。
便于开发:由于链路层完全集成在模块上,非常便于开发。
自动重发功能,自动检测和重发丢失的数据包,重发时间及重发次数可软件控制 自动存储未收到应答信号的数据包 自动应答功能,在收到有效数据后,模块自动发送应答信号,无须另行编程 载波检测—固定频率检测 内置硬件CRC 检错和点对多点通信地址控制 数据包传输错误计数器及载波检测功能可用于跳频设置 可同时设置六路接收通道地址,可有选择性的打开接收通道 标准插针Dip2.54MM 间距接口,便于嵌入式应用2.基本电气特性淘宝店铺:1奋斗版 STM32 开发板例程手册———NRF24L01+转 USB 虚拟串口实验3. 引脚定义:4.工作方式NRF2401有工作模式有四种: 收发模式 配置模式 空闲模式 关机模式 工作模式由CE 和寄存器内部PWR_UP、PRIM_RX 共同控制,见下表:淘宝店铺:2奋斗版 STM32 开发板例程手册———NRF24L01+转 USB 虚拟串口实验4.1 收发模式收发模式有Enhanced ShockBurstTM收发模式、ShockBurstTM收发模式和直接收发模式三种,收发模式由器件配置字决定,具体 配置将在器件配置部分详细介绍。
STM32实验板串口下载教程
![STM32实验板串口下载教程](https://img.taocdn.com/s3/m/408ecac88bd63186bcebbc5c.png)
STM32实验板串口下载教程一、软件安装如图1所示,将USB下载线一头插入实验板左上USB口,并且把两个BOOT跳线设置为图中方式。
然后将USB下载线另一头插入电脑USB口,观察实验板电源灯是否点亮。
图1 实验板下载示意图鼠标右键点击桌面计算机图标,选择菜单项“管理”,弹出计算机管理窗口如图2所示。
点击设备管理器栏目,如果实验板正常工作,将能看到图2中所示的USB虚拟串口。
图2 实验板连接电脑后的虚拟串口如果windows提示有未识别的usb设备并寻求驱动,这时还需安装PL2303的windows 驱动如图3所示。
图3 课程资料中的PL2303驱动安装包驱动安装完成并顺利识别出实验板串口后,再安装FLASH Loader Demo下载器软件如图4所示。
图4 Flash Loader Demo下载器软件安装包打开安装好之后的Flash Loader Demo软件,如图5所示:图5 下载器软件界面在下载器初始界面,程序会自动识别出计算机中所有串口,并选择第一个可用串口。
如果是笔记本电脑,插上实验板之后通常就只有一个实验板串口,下载器启动后会将其自动选上。
如果下载器启动后没有选上串口,很可能实验板连接不正常或该串口正被其他程序占用。
开始下载程序时,先按一次实验板复位键,然后鼠标点击界面中的“Next”按钮,若弹出图6画面,再按一次实验板复位键,并迅速点击界面上的“Next”按钮。
最后进入图7所示画面表示下载器已连接上实验板上的STM32器件,可以开始下载程序了。
图6 请按一次复位键图7 准备开始下载程序点击“Next”到下一界面,显示下载器连接的器件类型,再次点击“Next”到图8所示画面。
这时就可以选择我们自己编译出来的hex文件了。
这里,可以先尝试下载一个TEST.hex 测试文件看看实验板是否工作正常。
TEST.hex文件位置可见图4。
注意下载选项“Jump to the user program”可以在下载完后自动运行程序,方便大家测试。
windows下虚拟串口驱动开发
![windows下虚拟串口驱动开发](https://img.taocdn.com/s3/m/bd0cf1dd76a20029bd642d98.png)
现在介绍在windows XP下开发虚拟串口的方法。
可以开发一个虚拟串口,将读写请求传递给USB驱动,这样就可以利用现成的串口调试工具向USB设备读取了。
1、DDK串口开发框架DDK对串口驱动提供了专门接口。
只要编写的驱动满足这些接口,并按照串口标准的命名方法,不管是真实的串口设备,还是虚拟设备,Windows操作系统都会认为这个设备是一个标准的串口设备。
用标准的串口调试工具都可以与这个设备进行通信。
1、1 串口驱动的入口函数本章的实例程序是在HelloWDM驱动的基础上修改而来,入口函数依然是DriverEntry,在DriverEntry函数中指定各种IRP的派遣函数,以及AddDevice 例程、卸载例程等。
[cpp]view plaincopy1./************************************************************************2.* 函数名称:DriverEntry3.* 功能描述:初始化驱动程序,定位和申请硬件资源,创建内核对象4.* 参数列表:5. pDriverObject:从I/O管理器中传进来的驱动对象6. pRegistryPath:驱动程序在注册表的中的路径7.* 返回值:返回初始化驱动状态8.*************************************************************************/9.#pragma INITCODE10.extern"C" NTSTATUS DriverEntry(IN PDRIVER_OBJECT pDriverObject,11. IN PUNICODE_STRING pRegistryPath)12.{13. KdPrint(("Enter DriverEntry\n"));14.15. pDriverObject->DriverExtension->AddDevice = HelloWDMAddDevice;16. pDriverObject->MajorFunction[IRP_MJ_PNP] = HelloWDMPnp;17. pDriverObject->MajorFunction[IRP_MJ_DEVICE_CONTROL] = HelloWDMDispatchControlp;18. pDriverObject->MajorFunction[IRP_MJ_CREATE] = HelloWDMCreate;19. pDriverObject->MajorFunction[IRP_MJ_CLOSE] = HelloWDMClose;20. pDriverObject->MajorFunction[IRP_MJ_READ] = HelloWDMRead;21. pDriverObject->MajorFunction[IRP_MJ_WRITE] = HelloWDMWrite;22. pDriverObject->DriverUnload = HelloWDMUnload;23.24. KdPrint(("Leave DriverEntry\n"));25.return STATUS_SUCCESS;26.}其中在AddDevice例程中,需要创建设备对象,这些都是和以前的HelloWDM驱动程序类似。
STM32串行驱动12864液晶
![STM32串行驱动12864液晶](https://img.taocdn.com/s3/m/71fd5f9ed1d233d4b14e852458fb770bf78a3b2e.png)
STM32串⾏驱动12864液晶⾃⼰参考⼤神们的程序改写的液晶驱动,希望对有需要的⼈能有帮助#include "stm32f10x.h"static __IO uint32_t TimingDelay;void RCC_Configuration(void);void Delay(__IO uint32_t nTime);#define Line1 0x80//液晶第⼀⾏#define Line2 0x90//液晶第⼆⾏#define Line3 0x88//液晶第三⾏#define Line4 0x98//液晶第四⾏#define LCD_IO GPIOE //我⽤的是E.2 E.3 E.4 E.5 E.6#define CS GPIO_Pin_2#define RW GPIO_Pin_3#define CLK GPIO_Pin_4#define PSB GPIO_Pin_5#define RST GPIO_Pin_6#define SET(n) GPIO_SetBits(GPIOE,n) //将对应管脚输出⾼电平#define RESET(n) GPIO_ResetBits(GPIOE,n)//输出低电平#define CMD (uint32_t)0xf8000000 //串⾏写⼊的是命令要先写⼊0xf8 #define DATE (uint32_t)0xfa000000 // 串⾏写⼊数据要先写⼊0xfavoid LCD_IOinit_OUT() //推挽输出模式,管脚配置,不多解释,库函数有{GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Pin =CS|RW|CLK|PSB|RST;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(LCD_IO, &GPIO_InitStructure);}void LCD_Write(uint32_t cmd,uint8_t ddata)//LCD 写函数{uint32_t temp=cmd;uint32_t i;RESET(CS); //⽚选拉低temp|=((uint32_t)(ddata&(uint8_t)0xf0)<<16)+((uint32_t)(ddata&(uint8_t)0x0f)<<12);SET(CS); //⽚选拉⾼,开始传输数据for(i=0;i<24;i++){if(temp&0x80000000)SET(RW); //取出最⾼位,如果是1,那么RW就写1 else RESET(RW); //如果是0 RW就写0SET(CLK);//向液晶写数据是在下降沿写⼊的Delay(2);//稍作延时RESET(CLK);//拉低产⽣下降沿,写⼊数据temp=temp<<1;//左移⼀位,写⼊下⼀位}RESET(CS); //拉低⽚选,写⼊数据完毕}void Display(uint8_t addr,uint8_t *hz){LCD_Write(CMD,addr);Delay(3);while(*hz!='\0'){LCD_Write(DA TE,*hz);hz++;Delay(3);}}void LCD_init()//液晶初始化{RESET(CS); //拉低⽚选RESET(PSB);//PSB拉低,表⽰是串⾏,拉⾼则是并⾏RESET(RST);//拉低RSTDelay(100);SET(RST);Delay(40);LCD_Write(CMD,0x30);//8位数据传输Delay(40);LCD_Write(CMD,0x0c);//显⽰开,游标开Delay(40);LCD_Write(CMD,0x01);//清屏Delay(40);LCD_Write(CMD,0x06);//进⼊点设定AC+1Delay(40);}int main(){RCC_Configuration();SysTick_Config(72000); //配置SYSTICK时钟节拍为1ms⼀次LCD_IOinit_OUT();LCD_init();while(1){Display(Line1,"你妹");Display(Line2,"你妹");Display(Line3,"你妹妹");Display(Line4,"完事了,哈哈哈哈哈");}}void RCC_Configuration(void){SystemInit();RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE , ENABLE); }void Delay(__IO uint32_t nTime){TimingDelay = nTime;while(TimingDelay != 0);}void TimingDelay_Decrement(void){if (TimingDelay != 0x00){TimingDelay--;}}/*temp|=((uint32_t)(ddata&(uint8_t)0xf0)<<16)+((uint32_t)(ddata&(uint8_t)0x0f)<<12);重点解释⼀下这⾥,从串⾏时序图中可以看出,发送⼀个指令需要三个字节,第⼀个是0xf8或者0xfa这个根据你要发送的是命令还是数据⽽定,然后发送下⼀个数据的⾼四位和第四位,但是数据都是在⾼四位上⾯,⽤51的话我们要分三次发送,但是32的话⼀个字节可以是32位的/所以我们⼀次就能完成,这也是为什么下⾯的i<24的原因因为最后的8位没有⽤,例如:我们发送指令0x35,则应该是这样0xf8然后0x30然后0x50,这个应该很好理解所以看⼀下上⾯的语句⾸先我们cmd的值应该为0xf8000000,这个宏定义有的,这是发送命令然后我们让cmd=temp;在把temp和后⾯的计算结果做按位或运算.⾸先看这个(uint32_t)(ddata&(uint8_t)0xf0)<<16)我们的ddtate是0x35他和0xf0按位与之后/变为0x30然后左移16位变成0x30 0000;再强制转换为32位,就把⾼位补零变为0x00 30 0000再看这句话(uint32_t) (ddata&(uint8_t)0x0f)<<12)我们的ddtate是0x35他和0x0f按位与/之后变为0x05,左移12位0x05 000 强制转换为32位⾼位补零0x000 05 000 /在和前⾯的相加就是0x00 30 0000+0x000 05 000=0x0030 5000然后在和前⾯的0xf8000000按位或变为0xf830 5000 液晶读这个数据的时候是⼋位⼋位的读取所以在液晶看来是分四次的0xf8 0x30 0x50 0x00显然后⼋位没⽤所以我们只取前⾯的24位//应该能看懂了把结合时序图还有延时⼀定要精确⼤家有看不懂的可以给我留⾔*/。
STM32串口通信程序及下载步骤
![STM32串口通信程序及下载步骤](https://img.taocdn.com/s3/m/a6db8512caaedd3383c4d3c8.png)
STM32串口程序及下载步骤一、时钟定义void RCC_Configuration(void){ErrorStatus HSEStartUpStatus;//将外设RCC寄存器重设为缺省值RCC_DeInit();// 设置外部高速晶振(HSE)RCC_HSEConfig(RCC_HSE_ON);// 等待HSE起振HSEStartUpStatus = RCC_WaitForHSEStartUp();if(HSEStartUpStatus == SUCCESS){// 使能或者失能预取指缓存FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);// 设置代码延时值FLASH_SetLatency(FLASH_Latency_2);// 设置AHB时钟(HCLK): HCLK = SYSCLKRCC_HCLKConfig(RCC_SYSCLK_Div1);// 设置高速AHB时钟(PCLK2): PCLK2 = HCLKRCC_PCLK2Config(RCC_HCLK_Div1);//设置低速AHB时钟(PCLK1): PCLK1 = HCLK/2RCC_PCLK1Config(RCC_HCLK_Div2);// 设置PLL时钟源及倍频系数// PLLCLK = HSE*PLLMul = 8*9 = 72MHzRCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);//使能 PLLRCC_PLLCmd(ENABLE);//检查指定的RCC标志位设置与否// Wait till PLL is readywhile(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET); // 设置系统时钟(SYSCLK)RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);//返回用作系统时钟的时钟源// Wait till PLL is used as system clock sourcewhile(RCC_GetSYSCLKSource() != 0x08);}}二、中断定义void NVIC_Configuration(void){#ifdef VECT_TAB_RAM// Set the Vector Tab base at location at 0x20000000NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0);#else// Set the Vector Tab base at location at 0x80000000NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);#endifNVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);}三、串口定义void USART_Configuration(void){//GPIO端口设置GPIO_InitTypeDef GPIO_InitStructure;USART_InitTypeDef USART_InitStructure;NVIC_InitTypeDef NVIC_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA|RCC _APB2Periph_AFIO, ENABLE);//USART1_TX PA.9GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;GPIO_Init(GPIOA, &GPIO_InitStructure);//USART1_RX PA.10GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;GPIO_Init(GPIOA, &GPIO_InitStructure);//Usart1 NVIC 配置NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=3 ;NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ通道使能 NVIC_Init(&NVIC_InitStructure); //根据NVIC_InitStruct中指定的参数初始化外设NVIC寄存器USART1//USART 初始化设置USART_ART_BaudRate = 9600;//一般设置为9600;USART_ART_WordLength = USART_WordLength_8b;USART_ART_StopBits = USART_StopBits_1;USART_ART_Parity = USART_Parity_No;USART_ART_HardwareFlowControl =USART_HardwareFlowControl_None;USART_ART_Mode = USART_Mode_Rx | USART_Mode_Tx;USART_Init(USART1, &USART_InitStructure);USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);//开启接收中断USART_Cmd(USART1, ENABLE); //使能串口}四、接收中断u8 USART_RX_BUF[64]; //接收缓冲,最大64个字节.//接收状态//bit7,接收完成标志//bit6,接收到0x0d//bit5~0,接收到的有效字节数目u8 USART_RX_STA=0; //接收状态标记void USART1_IRQHandler(void) //串口1中断服务程序 {u8 Res;if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) //接收中断(接收到的数据必须是0x0d 0x0a结尾){Res =USART_ReceiveData(USART1);//(USART1->DR); //读取接收到的数据if((USART_RX_STA&0x80)==0)//接收未完成{if(USART_RX_STA&0x40) //接收到了0x0d{if(Res!=0x0a)USART_RX_STA=0;//接收错误,重新开始else USART_RX_STA|=0x80; //接收完成了}else //还没收到0X0D{if(Res==0x0d)USART_RX_STA|=0x40;else{USART_RX_BUF[USART_RX_STA&0X3F]=Res ;USART_RX_STA++;if(USART_RX_STA>63)USART_RX_STA=0; //接收数据错误,重新开始接收}}}}}五、主函数while(1){if(USART_RX_STA&0x80){len=USART_RX_STA&0x3f;//得到此次接收到的数据长度printf("\n您发送的消息为:\n");for(t=0;t<len;t++){USART1->DR=USART_RX_BUF[t];while((USART1->SR&0X40)==0);//等待发送结束}printf("\n\n");//插入换行USART_RX_STA=0;}else{times++;if(times%200==0)printf("请输入数据,以回车键结束\n");Delay(0xFFFF);}}}备注:本代码基于stm32f103RBT6,开发环境keil4 。
mega2560在win764位安装驱动成功
![mega2560在win764位安装驱动成功](https://img.taocdn.com/s3/m/4c929c2702d8ce2f0066f5335a8102d276a26110.png)
mega2560在win764位安装驱动成功1、APM2.52主芯片是Atmega2560,插上USB数据线后,在电脑上会被识别出一个串口设备,当然这个是要安装驱动才能用的,怎样安装驱动呢?首先将下面这个驱动文件放到你电脑上:Arduino MEGA 2560.inf(3.24 KB, 下载次数: 199)如果是完整版的操作系统,连接APM与USB数据线之后,到“我的电脑”->“属性”->“设备管理器”,找到新加入的硬件mega2560,选择“更新驱动程序”,然后选择刚刚下载的驱动程序文件即可,安装完成后可以在设备管理器中看到一个COM口。
2、如果是Ghost的系统或者精简版的系统,由于删除了大量的驱动,往往会导致安装驱动程序失败。
针对这种情况,以64位的Ghost 版win7系统为例,说一下如何安装驱动。
首先下载下面这两个文件,解压。
mdmcpq.inf_amd64_neutral_fbc4a14a6a13d0c8.rar(50.67 KB, 下载次数: 197)usbser.rar(16.26 KB, 下载次数: 134)然后替换mdmcpq.inf,mdmcpq.PNF,usbser.sys三个文件到目录:C:\Windows\System32\DriverStore\FileRepository\mdmcpq. inf_amd64_neutral_fbc4a14a6a13d0c8再替换usbser.sys文件到/system/driver 目录,替换mdmcpq.inf到/system/inf目录。
再重新执行第1步所述的安装步骤即可。
Ghost版本的win7,需要自建两个文件夹,在system32中需要取得管理员权限建立文件夹(右键管理员取得所有权限)。
STM32如何使用串口下载程序
![STM32如何使用串口下载程序](https://img.taocdn.com/s3/m/e970b7fa551810a6f524868a.png)
第1章如何使用串口下载程序
1.1安装USB转串口驱动
秉火的STM32开发板用的USB转串口的驱动芯片是CH340,要使用串口得先在电脑中安装USB转串口驱动—CH340版本。
驱动可在网上搜索下载或者使用我们光盘里面提供的。
WIN7用户请用管理员身份安装。
如果不能安装成功,请先百度查找原因自行解决。
1.2硬件连接
用USB线连接电脑和开发板的USB转串口接口:USB TO UART,给开发板上电。
如果USB转串口驱动安装成功,USB线跟板子连接没有问题,在计算机->管理->设备管理器->端口中可识别到串口。
图1识别到USB转串口端口
如果识别不了串口,请检查USB线是否完好,可换一根USB线试试。
1.3开始下载
打开mcuisp软件,配置如下:①搜索串口,设置波特率、②选择要下载的HEX文件、③校验、编程后执行、④DTR低电平复位,RTS高电平进入bootloader、⑤开始编程。
如果出现一直连接的情况,按一下开发板的复位键即可。
图2ISP下载配置
图3ISP下载成功。
64位win7旗舰版安装MSCOMM32.OCX的方法
![64位win7旗舰版安装MSCOMM32.OCX的方法](https://img.taocdn.com/s3/m/7ac8af0e58eef8c75fbfc77da26925c52cc591ef.png)
64位win7旗舰版安装MSCOMM32.OCX的⽅法MSCOMM32.OCXmscomm32.ocx是ActiveX公⽤控制模块,可⽤于Visual Basic 6.0程序的MSComm控制。
当你的电脑弹出提⽰“mscomm32.ocx丢失”或“⽆法找到mscomm32.ocx”等错误问题,请下载绿⾊资源⽹为你提供的该⽂件,适⽤于winxp和win7系统。
MSCOMM32.OCX是VB的⼀个串⼝控件。
如果你的系统没有它,基于它的⼩程序将不能⽤。
串⼝控制控件MSCOMM32.OCX,⽤于编写串⼝控制程序需要调⽤,很⽅便的哦。
注册MSComm32控件,⽹上下载这个控件,然后把它拷贝到到C:\Windows\system32⽂件夹下,我装的是64位的Win7系统,是在C:\Windows\sysWOW64⽂件夹下,然后打开cmd,写⼊代码 regsvr32 C:\Windows\system32\MSComm32.ocx然后按enter会提⽰你注册成功C:\Windows\sysWOW64这个⽬录就是专门为32位的运⾏库准备的⽬录,很多软件需要32位的运⾏库,都需要将32位的库放到这个⽬录⾥⾯,如果是64位库直接放system32即可。
最近想学习⼀下上位机的编程语⾔,也就是VB VC C# Labview之类的。
但是,有⼀个串⼝程序,是在VB6.0下开发的,运⾏时,出现了错误。
但是Win7 64位已经是VS2008 VS2010等的了,不能安装原来的VC++6.0 VB6.0了。
那怎么使⽤之前的代码与运⾏之前的程序呢?Win7 兼容性还算是可以的。
这个串⼝程序使⽤的是:MSCOMM32.OCX,所以要在win7 上注册这个组件,因为不是DLL⽂件,可以直接使⽤。
成功的⽅法如下:把下载的mscomm32.ocx 复制到:C:\Windows\SysWOW64⽬录下(注意这⾥是win7 64位的)。
注册⽅法⼀:以管理员⾝份运⾏cmd,输⼊命令: regsvr32 mscomm32.ocx注册⽅法⼆:⽤记事本在 C:\Windows\SysWOW64新建⼀个txt⽂件,然后输⼊:C:\Windows\SysWOW64,保存成1.bat(改⽂件的扩展名)。
WinCE虚拟串口驱动
![WinCE虚拟串口驱动](https://img.taocdn.com/s3/m/ac1a0912f18583d049645934.png)
WinCE虚拟串口驱动(一)/norains/archive/2009/03/28/4032257.aspx//===================================================================== ===//TITLE:// WinCE虚拟串口驱动(一)//AUTHOR:// norains//DA TE:// Saturday 28-March-2009//Environment:// WINDOWS CE 5.0//===================================================================== ===用过串口进行开发的朋友应该都知道,串口驱动是一个典型的独占设备。
简单点来说,就是在成功地调用CreateFile打开串口之后,没有通过CloseHandle进行关闭,是无论如何都不能再次调用CreateFile来再次打开相同的串口。
有的朋友可能会觉得莫名奇妙,为什么微软要在这上面做限制呢?但其实从另一个角度来讲,微软这么做是非常有道理的。
以接收数据为例子,在驱动里面会有一定的缓存,用来保留一定量的数据。
当通过ReadFile来获取数据时,驱动就会将缓存给清空,然后再继续接收数据。
如果串口不是独占设备,可以多次打开,那么在读取数据上面就会有问题:应该什么时候才清空缓存?比方说,其中一个线程通过ReadFile来获得了数据,那么驱动应不应该将缓冲清空?如果清空,那另一个线程也想获得同样的数据进行分析,那就会产生数据丢失;如果不清空,万一之前已经通过ReadFile获取数据的线程再次进行读取,那么它将会得到同样重复的数据。
如果想要在这多个进程中维持数据的同步,肯定要额外增加相应的标识,但这样就会加大了驱动的复杂度,并且也无法和别的驱动保持一致。
因此,微软对串口实行独占设备的策略,是非常正确的。
用于keil的stm32驱动安装说明
![用于keil的stm32驱动安装说明](https://img.taocdn.com/s3/m/cc30d4677fd5360cba1adbad.png)
1、驱动安装
1、先找到“开发板驱动程序”,安装过程很简单,依次点击下一步即可完成安装。
2、用usb线连接开发板和电脑。
会出现如下问题。
双击可以发现,FT232被识别成了未知设备,连设备类型标签都丢失了
别担心,一会就能解决:首先,点击更新驱动程序,选择手动查找并安装驱动程序
从列表中选取
选择通用串行总线控制器
选择厂商“FTDI”,型号“USB,Serial Converter”,
下一步,选择继续安装驱动
然后,你可以看到。
还要更新一次驱动,虽然是只有一个设备,却要更新两次才能正常,再双击这个设备这次选择的不是通用串行总线控制器,二是是端口(COM和LPT)
厂商和版本,和之前的一样
至此驱动安装完毕
2、STMISP安装
1、找到“STM32 ISP程序下载器”,选择安装路径,依次点击下一步完成安装。
2、此软件由于年代久远,缺乏更新,在新的一代系统中缺少相应的组件mesa.dll,打开软件时会出现缺少组件等问题。
解决办法:找到把已经下载好的“mesa.dll”文件拷到如下系统路径。
C:\Windows\SysWOW64或者C:\Windows\System32
3、程序烧写步骤
1、用跳线帽短路boot0,选择单片机启动方式为下载模式。
拔掉跳线帽则为正常运行模式
2、打开STM32ISP程序下载器,根据下图次序选择操作
1)其中端口的选择要在在设备管理器中进行查看
2)连接设备成功之后,会显示操作信息。
3)装载。
找到MDK工程生成的hex文件。
4)选择自动烧写。
5)拔掉跳线帽,复位单片机,程序可正常运行。
win7 usb转串口驱动安装方案 32位 64位
![win7 usb转串口驱动安装方案 32位 64位](https://img.taocdn.com/s3/m/8aee311b6c175f0e7cd13768.png)
USB装串口不成功,出错问题的解决方案
最近链接刻字机的usb线坏掉了,不得己只好用usb转串口线替代USB线进行作业。
开始在网上找了大量关于usb转串口的驱动程序,尝试了都是不行。
虽然都没有安装成功,但是从大家的描述中还是找到一些规律。
现在做成教程发到网上和大家共享。
同时,我会共享最后找到的经过测试成功的驱动程序。
废话不多说,先说明我电脑当时出现的情况:
一、现象把握
当时插上usb转串口后,“端口(COM和LPT)下面的显示是黄色。
点开“属性”后显示设备显示“该设备无法启动,代码10”
二、纠正措施
第一步,下载驱动程序
/mikuor/item/97b02dc790969e52bdef69da
在我的空间下面留个邮箱即可,我会定期去给大家发驱动程序的。
第二步,在“设备管理器”里面点“端口”下面黄色,选择“属性”,点“驱动程序”,“更新驱动程序”
第三步,“浏览计算机一级查找驱动程序软件(R)”
第四步,“从计算机的设备驱动程序列表中选择”
第五步,“从磁盘安装”第六步,浏览
第七步,选择“SERWPL.INF”,点“打开”
第八步,等待安装完毕后,设备管理器中自动更新程序,黄色问号没有了。
在WIN8%2064位系统下安装虚拟串口驱动的说明pdf
![在WIN8%2064位系统下安装虚拟串口驱动的说明pdf](https://img.taocdn.com/s3/m/adbfe56e03768e9951e79b89680203d8ce2f6a9e.png)
在WIN8%2064位系统下安装虚拟串口驱动的说明pdf在WIN8 64位系统下安装虚拟串口驱动的说明一、允许未验证签名的驱动安装以管理员身份登录windows,在命令行下运行以下命令,允许未验证签名的驱动安装。
bcdedit.exe -set TESTSIGNING ON后重启计算机即可。
在有的计算机可能会出现提示"设置元素数据时出错。
“该值受引导安全策略保护,无法进行修改或删除。
首先要进入BOIS ,以dell举例。
由于是UEFI快速启动,看不见F2 F12 的说明。
开机直接按F2就可以直接进BOIS了,然后上面boot 选项找到Secure Boot 把他从Enable改成Disabled,这样 save and exit就好了。
二、更改win8禁用驱动程序强制签名WIN8系统最下面有个更改电脑设置,或者按【Win】+【i】,直接打开设置。
打开电脑设置后,左侧选择常规,然后右侧选择最后一项立即重启。
这里选择疑难解答这里选择高级选项这里选择启动设置,。
重启选择F7-禁用驱动程序强制签名三、安装虚拟串口驱动通过命令行的方式安装虚拟串口驱动。
进入无线串口软件安装目录:bin/com0com64/,双击setupc.exe。
command> list显示目前所有的com0com虚拟串口安装COM14虚拟串口,则command> install - PortName=COM14CNCA5 PortName=-CNCB5 PortName=COM14ComDB: COM14 - logged as "in use"command> listCNCA5 PortName=-CNCB5 PortName=COM14建议用户根据需要一次性安装足够数量的虚拟串口驱动,避免多次重启WIN8四、使用辅助工具:虚拟串口工具.exe,将虚拟串口驱动设置为签名认证。
运行软件“签名认证工具.exe”,选择Next->Yes—>,选择功能"Sign a System File"后,选择Next。
usb cdc驱动for winxp win7 32bit 64bit
![usb cdc驱动for winxp win7 32bit 64bit](https://img.taocdn.com/s3/m/e11f49db58f5f61fb6366617.png)
AddReg=DriverInstall.NTamd64.AddReg
[DriverCopyFiles.NTamd64]
%DRIVERFILENAME%.sys,,,0x20
[DriverInstall.NTamd64.AddReg]
;CatalogFile=%FILENAME%.cat
DriverVer= 9/20/2009,1.2.0
[Manufacturer]
%MANUFACTURER%=DeviceList,NTamd64
[DestinationDirs]
DefaultDestDir=12
;------------------------------------------------------------------------------
[SourceDisksFiles]
[SourceDisksNames]
[DeviceList]
%DESCRIPTION%=DriverInstall,USB\VID_0483&PID_5740
பைடு நூலகம்
[DeviceList.NTamd64]
%DESCRIPTION%=DriverInstall,USB\VID_0483&PID_5740
驱动代码如下,请拷贝到一个新文件,并修改后缀名为inf
[Version]
Signature="$Windows NT$"
Class=Ports
ClassGuid={4D36E978-E325-11CE-BFC1-08002BE10318}
stm32 虚拟串口原理
![stm32 虚拟串口原理](https://img.taocdn.com/s3/m/9aff4d2bdcccda38376baf1ffc4ffe473268fd79.png)
stm32 虚拟串口原理STM32的虚拟串口(Virtual COM Port)通常是通过USART(通用同步异步收发器)或者UART(通用异步收发器)实现的,它允许STM32与PC或其他设备通过串行通信进行数据交换。
虚拟串口的概念并不是STM32特有的,而是在很多嵌入式系统中都存在的一个概念。
这里简要介绍一下STM32虚拟串口的工作原理:1.硬件设置:首先,你需要在STM32上配置USART或UART的硬件参数,如波特率、数据位、停止位和校验位等。
这些参数需要与你的通信对端(通常是PC)的设置相匹配。
2.驱动编写:你需要为STM32编写USART或UART的驱动程序。
驱动程序通常包括初始化函数、发送数据函数和接收数据函数。
初始化函数用于设置USART或UART的硬件参数,发送和接收函数用于处理数据的发送和接收。
3.虚拟串口映射:在PC端,你需要安装一个虚拟串口驱动程序,这个驱动程序会在PC上创建一个或多个虚拟串口设备。
然后,你需要将STM32的USART或UART端口映射到PC上的一个虚拟串口设备上。
这通常是通过配置STM32的BOOT引脚和复位引脚来实现的。
4.数据通信:一旦STM32的USART或UART端口与PC的虚拟串口设备建立连接,你就可以通过这两个设备进行数据通信了。
STM32可以通过USART或UART发送数据到PC,PC也可以通过虚拟串口设备接收这些数据。
同样,PC也可以通过虚拟串口设备发送数据到STM32,STM32也可以通过USART或UART接收这些数据。
总的来说,STM32的虚拟串口就是通过USART或UART实现的一种串行通信方式,它允许STM32与PC 或其他设备进行数据交换。
1。
奋斗STM32开发板Tiny NRF24L01转USB虚拟串口例程手册
![奋斗STM32开发板Tiny NRF24L01转USB虚拟串口例程手册](https://img.taocdn.com/s3/m/f59f1f36eefdc8d376ee32b8.png)
奋斗版 STM32 开发板例程手册———NRF24L01+转 USB 虚拟串口实验NRF24L01+转 USB 虚拟串口实验实验平台:奋斗版STM32开发板Tiny 实验内容:板子通过USB加电后,先向串口1输出一串测试数据,然后USB被PC识 别出来,虚拟出一个串口号给这个USB设备,此时可以通过在PC端的串口助手类 软件选择该串口号。
进入串口软件界面,可以通过软件无线收发一帧长度最长 为32字节的数据。
该例程可以和V3及MINI板的NRF24L01 UCGUI例程配合使用。
预先需要掌握的知识 2.4G通信模块NRF24L01 1. 产品特性2.4GHz 全球开放ISM 频段,最大0dBm 发射功率,免许可证使用 支持六路通道的数据接收 低工作电压:1.9 1.9~3.6V 低电压工作 高速率:2Mbps,由于空中传输时间很短,极大的降低了无线传输中的碰撞现象(软件设置1Mbps或者2Mbps的空中传输速率) 多频点:125 频点,满足多点通信和跳频通信需要 超小型:内置2.4GHz天线,体积小巧,15x29mm(包括天线) 低功耗:当工作在应答模式通信时,快速的空中传输及启动时间,极大的降低了电流消耗。
低应用成本:NRF24L01 集成了所有与RF协议相关的高速信号处理部分,比如:自动重发丢失数据包和自动产生应答信号等, NRF24L01的SPI接口可以利用单片机的硬件SPI口连接或用单片机I/O口进行模拟,内部有FIFO可以与各种高低速微处理器接口, 便于使用低成本单片机。
便于开发:由于链路层完全集成在模块上,非常便于开发。
自动重发功能,自动检测和重发丢失的数据包,重发时间及重发次数可软件控制 自动存储未收到应答信号的数据包 自动应答功能,在收到有效数据后,模块自动发送应答信号,无须另行编程 载波检测—固定频率检测 内置硬件CRC 检错和点对多点通信地址控制 数据包传输错误计数器及载波检测功能可用于跳频设置 可同时设置六路接收通道地址,可有选择性的打开接收通道 标准插针Dip2.54MM 间距接口,便于嵌入式应用2.基本电气特性淘宝店铺:1奋斗版 STM32 开发板例程手册———NRF24L01+转 USB 虚拟串口实验3. 引脚定义:4.工作方式NRF2401有工作模式有四种: 收发模式 配置模式 空闲模式 关机模式 工作模式由CE 和寄存器内部PWR_UP、PRIM_RX 共同控制,见下表:淘宝店铺:2奋斗版 STM32 开发板例程手册———NRF24L01+转 USB 虚拟串口实验4.1 收发模式收发模式有Enhanced ShockBurstTM收发模式、ShockBurstTM收发模式和直接收发模式三种,收发模式由器件配置字决定,具体 配置将在器件配置部分详细介绍。