STC32超级简单的USB-CDC虚拟串口应用及不停电下载
1.1 USB-CDC虚拟串口概述
1.2 新建Keil项目并加入CDC模块
3、打开Keil软件,并新建项目
Database请选择“STC MCU Database”
单片机型号选择“STC32G12K128 Series”4、项目建立完成后,将下面的代码命名为main.c文件并保存到项目目录中//测试工作频率为24MHz#include "stc32g.h"#include "stc32_stc8_usb.h"#define FOSC 24000000UL//ISP下载时需将工作频率设置为24MHzchar *USER_DEVICEDESC = NULL;char *USER_PRODUCTDESC = NULL;char *USER_STCISPCMD = "@STCISP#"; //不停电自动ISP下载命令void main(){ WTST= 0; CKCON= 0; EAXFR= 1; P0M1= 0x00; P0M0 = 0x00; P1M1= 0x00; P1M0 = 0x00; P2M1= 0x00; P2M0 = 0x00; P3M1= 0x00; P3M0 = 0x00; P4M1= 0x00; P4M0 = 0x00; P5M1= 0x00; P5M0 = 0x00; P6M1= 0x00; P6M0 = 0x00; P7M1= 0x00; P7M0 = 0x00; P3M0&= ~0x03; //P3.0/P3.1和USB的D-/D+共用PIN脚, P3M1|= 0x03; //需要将P3.0/P3.1设置为高阻输入模式 IRC48MCR= 0x80; //使能内部48M的USB专用IRC while(!(IRC48MCR & 0x01)); USBCLK= 0x00; //设置USB时钟源为内部48M的USB专用IRC USBCON= 0x90; //使能USB功能 usb_init(); //调用USB CDC初始化库函数 EUSB= 1; //使能USB中断 EA= 1; while(DeviceState != DEVSTATE_CONFIGURED); //等待USB完成配置 while(1) { if(bUsbOutReady) //当硬件接收完成上位机通过串口助手发送数据后//会自动将bUsbOutReady置1//接收的数据字节数保存在OutNumber变量中//接收的数据保存在UsbOutBuffer缓冲区 { USB_SendData(UsbOutBuffer,OutNumber); //使用USB_SendData库函数可向上位机发送数据//这里的测试代码为将接收数据原样返回 usb_OUT_done(); //处理完成接收的数据后//调用usb_OUT_done准备接收下一笔数据 } }}
5、将项目目录下的“main.c”和“stc_usb_cdc_32g.lib”加入到项目中
6、进行项目设置
设置完成后,编译通过即可生产目标HEX文件
7、使用最新的STC-ISP下载软件将HEX下载到目标芯片
8、下载完成后,系统中就会出现一个STC USB-CDC串口
1.3 USB-CDC虚拟串口与电脑进行数据传输
用STC-ISP软件中的串口助手打开CDC串口,即可进行数据收发测试1.4 STC USB-CDC虚拟串口实现不停电自动ISP下载