找回密码
 立即注册
楼主: z***

STC8H超级简单的USB-CDC虚拟串口应用及不停电下载(中断模式+查询模式)

[复制链接]

该用户从未签到

3

主题

51

回帖

473

积分

中级会员

积分
473
发表于 2023-3-30 11:41:16 | 显示全部楼层
本帖最后由 晓奇 于 2023-3-30 12:40 编辑

总结一下,我把修改部分整理出来给需要的同学参考,对转换其他代码有点用

为了稳妥起见把原工程文件复制一个出来修改一下新的目录名,建议简短、英文加数字、别用符号
下面开始修改:(我习惯用UEDIT来做)
1.找到并复制一个stc32g.h进来
2.在文件stc.h里面用stc32g.h替换stc8h.h
3.在文件uart.h里面把xdata改为edata,不改也行,在宏定义函数BR(n)里面的65536前添加(DWORD)否则251系统会报错
4.打开uart.c修改里面的EUASB的用法,因为在8h里只是一个宏定义常数数据,而在32g里面他是sbit定义的可位寻址的位变量
  a.把IE2 &= ~EUSB替换为EUSB=0,把IE2 |= EUSB替换为EUSB=1.
  b.xdata -> edata
  c.Count7F全部删掉,没有用,估计原作者本来想用的,后来忘了又另外重新定义了一个IspCount7F;
  d.AUXR |= T1x12; 也是宏定义与sbit的不同,改为T1x12 = 1;//1T模式
    AUXR |= T2x12;  -> T2x12 = 1;  AUXR |= T2R; -> T2R = 1;   IE2 |= ES2; -> ES2 = 1;
    if(S2CON & S2TI) -> if( S2TI )    S2CON &= ~S2TI; -> S2TI =0;
    if (S2CON & S2RI) -> if ( S2RI )  S2CON &= ~S2RI; -> S2RI =0;
  e.S2CON &= ~S2TB8; -> S2TB8 = 0;
    把      if (!P)
            {
                S2CON |= S2TB8;
            }
            else
            {
                S2CON &= ~S2TB8;
            }
    直接换成一句
            S2TB8 = !P;
    同样:  if (P)
            {
                S2CON |= S2TB8;
            }
            else
            {
                S2CON &= ~S2TB8;
            }
    直接换成一句
            S2TB8 = P;
    S2CON |= S2TB8; -> S2TB8 = 1;
  uart.c完成,保存一下
5.打开 usb.c在usb_init()里面有一句 IE2 |= EUSB; 把他改成 EUSB = 1; 完成,保存

6.打开main.c,端口设置都在这里,还有其他设置,寄存器的操作8h和32g不同要仔细核对头文件定义方式
  a. sys_init()里面头二行换成:
        WTST = 0;  //设置程序指令延时参数,赋值为0可将CPU执行指令的速度设置为最快
        EAXFR = 1; //扩展寄存器(XFR)访问使能
        CKCON = 0; //提高访问XRAM速度
  b. 下面这两行
        P_SW1 |= UART1_S2;      //UART1(RxD_2/P3.6, TxD_2/P3.7)
        P_SW2 |= UART2_S1;      //UART2(RxD2/P1.0, TxD2/P1.1)
    改成:
        S1_S1 = 0;      //UART1 switch to, 00: P3.0 P3.1, 01: P3.6 P3.7, 10: P1.6 P1.7, 11: P4.3 P4.4
        S1_S0 = 1;
        S2_S = 0;       //选择串口2通道  0: P1.0, P1.1;  1: P4.6, P4.7

7.keil打开原来的工程.uvproj,进入工程设置:
  a. Device 里面把芯片改为32g;
  b. Target 下设置内存模式为 XSmall,右边的4-Byte...勾上
  c. Output选择输出文件格式为HEX-386,别忘了左边打个勾
  c. 把各种文件的路径设置一下,不喜欢都聚在一起,分开存放比较清爽。头文件都在inc目录下必须要设置,不然keil找不到
   可以编译一下看看有没有遗漏的
   写入芯片看看,一举成功在系统硬件管理器里面多了两个串口
   
   读通高手的源代码是一个既痛苦又兴奋的过程,痛苦的是一开始很多东西无法理解--看不懂,兴奋的是经过不懈地努力逐渐投入了--懂了一点,
   今天把这个修改的过程记录下来重新演示一遍,实际上就是一个学习提高的过程,高兴

点评

感谢分享,屠龙刀以及STC-USB Link1D今日已安排寄出,期待您的测试好评  详情 回复 发表于 2023-3-30 13:27
回复 支持 反对 送花

使用道具 举报

该用户从未签到

9

主题

293

回帖

1698

积分

版主

积分
1698
QQ
发表于 2023-3-30 13:27:45 | 显示全部楼层
晓奇 发表于 2023-3-30 11:41
总结一下,我把修改部分整理出来给需要的同学参考,对转换其他代码有点用

为了稳妥起见把原工程文件复制一 ...

感谢分享,屠龙刀以及STC-USB Link1D今日已安排寄出,期待您的测试好评
QQ:1463035472,微信:19952583954
回复 支持 反对 送花

使用道具 举报

该用户从未签到

550

主题

9221

回帖

1万

积分

管理员

积分
13912
发表于 2023-3-30 18:12:53 | 显示全部楼层
可以用STC-USB Link1D 来 SWD仿真 STC32G12K128的 USB,
要仿真USB[D-/P3.0, D+/P3.1], 那 SWD仿真接口要设置到其他I/O !
1.png


1.png
回复 支持 反对 送花

使用道具 举报

该用户从未签到

3

主题

51

回帖

473

积分

中级会员

积分
473
发表于 2023-3-31 15:52:09 | 显示全部楼层
东西收到了,非常感谢。
屠龙刀核心板子,两个字:工整。
link1D插上就Ok,仿真功能连接试了一下也很顺利,单步等都很爽,第一次用硬件仿真,有点惊喜感的。
现在剩下一个问题:脱机下载好需要慢慢来,摸索一下
再次感谢STC的礼物!

点评

脱机下载也是非常方便的,我联系您  详情 回复 发表于 2023-3-31 16:08
回复 支持 反对 送花

使用道具 举报

该用户从未签到

9

主题

293

回帖

1698

积分

版主

积分
1698
QQ
发表于 2023-3-31 16:08:29 | 显示全部楼层
晓奇 发表于 2023-3-31 15:52
东西收到了,非常感谢。
屠龙刀核心板子,两个字:工整。
link1D插上就Ok,仿真功能连接试了一下也很顺利, ...

脱机下载也是非常方便的,我联系您
QQ:1463035472,微信:19952583954
回复 支持 反对 送花

使用道具 举报

该用户从未签到

3

主题

51

回帖

473

积分

中级会员

积分
473
发表于 2023-3-31 19:44:51 | 显示全部楼层
确实简单,我用我自己焊的板子做脱机下载一点问题都没有,我焊的那块芯片不是"Beta",我没留意屠龙刀芯片后面还多了一个"Beta",反正选了32g12k128就开干,脱机下载屡屡失败,刚才散步想起来是不是这个问题?回来一试果然是,选对芯片很重要!不然没地方去查,没有人提示你出错的原因
千奇百怪的情况,神仙也回答不了
回复 支持 反对 送花

使用道具 举报

该用户从未签到

550

主题

9221

回帖

1万

积分

管理员

积分
13912
发表于 2023-3-31 20:27:09 | 显示全部楼层
1.png

据说升级到STC-ISP V6.91M 不管 BETA 不 BETA了。
2.png 点击升级按钮
回复 支持 反对 送花

使用道具 举报

该用户从未签到

3

主题

51

回帖

473

积分

中级会员

积分
473
发表于 2023-3-31 20:50:03 | 显示全部楼层
直接下载确实不管beta,就是因为他不管才出问题,Link1D他认真啊非要完全对上才行
回复 支持 反对 送花

使用道具 举报

该用户从未签到

550

主题

9221

回帖

1万

积分

管理员

积分
13912
发表于 2023-3-31 22:16:52 | 显示全部楼层
回复 送花

使用道具 举报

该用户从未签到

3

主题

51

回帖

473

积分

中级会员

积分
473
发表于 2023-4-3 16:48:52 | 显示全部楼层
这两天把两个版本的双雕合成了,并做了两路都可自动分别断电,代码奉上请大侠指正

A0USB转双串口自动断电烧录器结构数组变频.zip

41.35 KB, 下载次数: 31

回复 支持 反对 送花

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-27 06:07 , Processed in 0.075592 second(s), 72 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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