找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1970|回复: 0
打印 上一主题 下一主题
收起左侧

STM32F103系列 USB虚拟串口 程序

[复制链接]
跳转到指定楼层
楼主
ID:917688 发表于 2021-5-8 18:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
USB虚拟串口
  1. #include "sys.h"
  2. #include "delay.h"
  3. #include "usart.h"
  4. #include "led.h"                           
  5. #include "lcd.h"
  6. #include "usb_lib.h"
  7. #include "hw_config.h"
  8. #include "usb_pwr.h"         




  9. int main(void)
  10. {         
  11.         u16 t;
  12.         u16 len;       
  13.         u16 times=0;   
  14.         u8 usbstatus=0;       
  15.         delay_init();                     //延时函数初始化          
  16.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);         //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
  17.         uart_init(115200);                 //串口初始化为115200
  18.         LED_Init();                                  //初始化与LED连接的硬件接口
  19.         LCD_Init();                                //初始化LCD
  20.         POINT_COLOR=RED;                //设置字体为红色
  21.         LCD_ShowString(30,50,200,16,16,"WarShip STM32");       
  22.         LCD_ShowString(30,70,200,16,16,"USB Virtual USART TEST");       
  23.         LCD_ShowString(30,90,200,16,16,"ATOM@ALIENTEK");
  24.         LCD_ShowString(30,110,200,16,16,"2015/1/28");  
  25.         LCD_ShowString(30,130,200,16,16,"USB Connecting...");//提示USB开始连接
  26.         delay_ms(1800);
  27.         USB_Port_Set(0);         //USB先断开
  28.         delay_ms(700);
  29.         USB_Port_Set(1);        //USB再次连接
  30.         Set_USBClock();   
  31.         USB_Interrupts_Config();   
  32.         USB_Init();            
  33.         while(1)
  34.         {
  35.                 if(usbstatus!=bDeviceState)//USB连接状态发生了改变.
  36.                 {
  37.                         usbstatus=bDeviceState;//记录新的状态
  38.                         if(usbstatus==CONFIGURED)
  39.                         {
  40.                                 POINT_COLOR=BLUE;
  41.                                 LCD_ShowString(30,130,200,16,16,"USB Connected    ");//提示USB连接成功
  42.                                 LED1=0;//DS1亮
  43.                         }else
  44.                         {
  45.                                 POINT_COLOR=RED;
  46.                                 LCD_ShowString(30,130,200,16,16,"USB disConnected ");//提示USB断开
  47.                                 LED1=1;//DS1灭
  48.                         }
  49.                 }
  50.                 if(USB_USART_RX_STA&0x8000)
  51.                 {                                          
  52.                         len=USB_USART_RX_STA&0x3FFF;//得到此次接收到的数据长度
  53.                         usb_printf("\r\n您发送的消息为:%d\r\n\r\n",len);
  54.                         for(t=0;t<len;t++)
  55.                         {
  56.                                 USB_USART_SendData(USB_USART_RX_BUF[t]);//以字节方式,发送给USB
  57.                         }
  58.                         usb_printf("\r\n\r\n");//插入换行
  59.                         USB_USART_RX_STA=0;
  60.                 }else
  61.                 {
  62.                         times++;
  63.                         if(times%5000==0)
  64.                         {
  65.                                 usb_printf("\r\n战舰STM32开发板USB虚拟串口实验\r\n");
  66.                                 usb_printf("正点原子@ALIENTEK\r\n\r\n");
  67.                         }
  68.                         if(times%200==0)usb_printf("请输入数据,以回车键结束\r\n");  
  69.                         if(times%30==0)LED0=!LED0;//闪烁LED,提示系统正在运行.
  70.                         delay_ms(10);   
  71.                 }
  72.         }
  73. }

复制代码


USB虚拟串口实验.zip

422.76 KB, 下载次数: 53, 下载积分: 黑币 -5

USB虚拟串口

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表