linux驱动stm32虚拟串口,stmcdc.inf文件(虚拟串口驱动文件)

;

; STMicroelectronics Comunication Device Class driver instalation file

; (C)2006 Copyright STMicroelectronics

;

[Version]

Signature="$Windows NT$"

Class=Ports

ClassGuid={4D36E978-E325-11CE-BFC1-08002BE10318}

Provider=%STM%

LayoutFile=layout.inf

DriverVer=10/02/06

[Manufacturer]

%STM%=DeviceList

[DestinationDirs]

DefaultDestDir=12

[SourceDisksFiles]

[SourceDisksNames]

[DeviceList]

%DESCRIPTION%=STMUSB, USB\VID_0483&PID_5740

;------------------------------------------------------------------------------

;  Windows 2000/XP Sections

;------------------------------------------------------------------------------

[STMUSB.nt]

include=mdmcpq.inf

CopyFiles=DriverCopyFiles

AddReg=STMUSB.nt.AddReg

[DriverCopyFiles]

usbser.sys,,,0x20

[STMUSB.nt.AddReg]

HKR,,DevLoader,,*ntkern

HKR,,NTMPDriver,,usbser.sys

HKR,,EnumPropPages32,,"MsPorts.dll,SerialPortPropPageProvider"

[STMUSB.nt.Services]

AddService=usbser, 0x00000002, DriverService

[STMUSB.nt.HW]

include=mdmcpq.inf

[DriverService]

DisplayName=%DESCRIPTION%

ServiceType=1

StartType=3

ErrorControl=1

ServiceBinary=%\usbser.sys

;------------------------------------------------------------------------------

;  String Definitions

;------------------------------------------------------------------------------

[Strings]

STM="STMicroelectronics"

DESCRIPTION="STM32 Virtual COM Port"

用STM32CubeMX设置"mode"为Device_Only,"class for FS IP"为Communication Device class.

生成代码只在几个地方修改一点代码,自己写的不超过50行代码,PC就可以识别为串口了。

1.Heap Size 要加大。

2.usbd_cdc_if.c 中要加上:

1)

USBD_CDC_LineCodingTypeDef LineCoding;

2)

#define APP_RX_DATA_SIZE  64

#define APP_TX_DATA_SIZE  64

3)

case CDC_SET_LINE_CODING:

LineCoding.bitrate    = (uint32_t)(pbuf[0] | (pbuf[1] << 8) |\

(pbuf[2] << 16) | (pbuf[3] << 24));

LineCoding.format     = pbuf[4];

LineCoding.paritytype = pbuf[5];

LineCoding.datatype   = pbuf[6];

break;

case CDC_GET_LINE_CODING:

pbuf[0] = (uint8_t)(LineCoding.bitrate);

pbuf[1] = (uint8_t)(LineCoding.bitrate >> 8);

pbuf[2] = (uint8_t)(LineCoding.bitrate >> 16);

pbuf[3] = (uint8_t)(LineCoding.bitrate >> 24);

pbuf[4] = LineCoding.format;

pbuf[5] = LineCoding.paritytype;

pbuf[6] = LineCoding.datatype;

break;

4)

static int8_t CDC_Receive_FS (uint8_t* Buf, uint32_t *Len)

{

/* USER CODE BEGIN 6 */

memcpy(UserTxBufferFS,Buf,*Len);

CDC_Transmit_FS(UserTxBufferFS,*Len);

USBD_CDC_ReceivePacket(hUsbDevice_0);

return (USBD_OK);

/* USER CODE END 6 */

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值