找回密码
 立即注册
查看: 483|回复: 0

usb不停电下载

[复制链接]

11

主题

-1

回帖

59

积分

注册会员

积分
59
发表于 2023-8-30 10:33:41 | 显示全部楼层 |阅读模式
stc32的不停电下载模式(这个必要)
  • 设计方案:
    第一步:去官方下载USB的资源
    下载完成后后面的步骤按官方文档来设置。下面给大家提供实现代码:
  • 代码
    1. // 头文件
    2. #include "stc32g.h"         //stc32g头文件
    3. #include "stc32_stc8_usb.h"
    4. // USB 不停电自动下载必要的代码
    5. char *USER_DEVICEDESC = NULL;
    6. char *USER_PRODUCTDESC = NULL;
    7. char *USER_STCISPCMD = "@STCISP#";                        //不停电自动ISP下载命令
    8. void sys_init();                        // 设置为准双向口函数的声明
    9. void delay_ms(u8 ms);                // 延时函数的声明
    10. //主函数
    11. void main()
    12. {
    13.     sys_init();          // USB函数
    14.     usb_init();         // USB初始化
    15.     EUSB = 1;           // 使用USB中断
    16.     EA = 1;
    17.     while (DeviceState != DEVSTATE_CONFIGURED);         //等待 USB 完成配置
    18.     while (1)
    19.     {
    20.         delay_ms(2);
    21.         if (bUsbOutReady)  //判断时候生成虚拟端口
    22.         {
    23.             USB_SendData(UsbOutBuffer,OutNumber);
    24.             usb_OUT_done();
    25.         }
    26.     }
    27. }
    28. // 准双向口函数
    29. void sys_init()
    30. {
    31.     WTST = 0;
    32.     CKCON = 0;
    33.     EAXFR = 1;
    34.     P0M1 = 0;        P0M0 = 0;        //设置为准双向口
    35.     P1M1 = 0;        P1M0 = 0;        //设置为准双向口
    36.     P2M1 = 0;        P2M0 = 0;        //设置为准双向口
    37.     P3M1 = 0;        P3M0 = 0;        //设置为准双向口
    38.     P4M1 = 0;        P4M0 = 0;        //设置为准双向口
    39.     P5M1 = 0;        P5M0 = 0;        //设置为准双向口
    40.     P6M1 = 0;        P6M0 = 0;        //设置为准双向口
    41.     P7M1 = 0;        P7M0 = 0;        //设置为准双向口
    42. //    P3.0/P3.1和USB的D-/D+共用PIN脚,需要将P3.0/P3.1设置为高祖输入模式
    43.     P3M0 &= ~0X03;
    44.     P3M1 |= 0X03;
    45.     IRC48MCR = 0X80;
    46.     while (!(IRC48MCR & 0X01));
    47.     USBCLK = 0X00;
    48.     USBCON = 0X90;
    49. }
    50. //延时函数
    51. void delay_ms(u8 ms)
    52. {
    53.     u16 i;
    54.     do {
    55.         i = MAIN_Fosc / 6000;
    56.         while (--i);
    57.     } while (--ms);
    58. }
    复制代码





回复

使用道具 举报 送花

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

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-3 15:17 , Processed in 0.104901 second(s), 45 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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