32位8051-AI
发表于 2023-3-28 15:56:02
晓奇 发表于 2023-3-28 14:21
想把一箭双雕开源代码移植到32G上,除了换头文件为32g,其他不知该修改哪些?我换过去试过了不行,是不是des ...
可以参考下STC32G数据手册5.5章节
乘风飞扬
发表于 2023-3-28 20:01:51
perseverance51 发表于 2023-3-17 23:00
实测STC8和STC32G很不稳定,时不时端口号消失,如果很稳定为什么不把这么一个重要的功能放到库函数例程里 ...
有没有添加到库函数例程里,不是衡量一个功能是否稳定的标准。库函数例程是为了方便用户配置芯片模块功能而封装了配置函数。
USB模块功能比较复杂不容易封装,所以我们提供了两种版本:一种是完全开源的例程给资深用户和企业客户,方便他们进行修改配置表,添加功能。另一种是将USB模块封装成库文件,按照固定的方法调用就能轻松实现USB通信,方便初学者以及不是很熟悉USB结构的用户能够简便的使用USB通信。
USB/CDC功能已经发布了一段时间了,也送出了大量的开天斧,屠龙刀实验板,配套的例程基本上都用到了USB/CDC功能,是否稳定大家心里也有公论。
时不时端口号消失的话建议检查一下线路是否稳定,线材质量是否可靠,以及板子的耗电是否超出USB接口的承受能力。
晓奇
发表于 2023-3-28 23:42:25
不好意思,开源程序移植到32G上没有问题,只是需要仔细核对每一个寄存器的操作,特别是32G可以位寻址可以直接进行位操作,做一遍核对以后windows也就能识别了,一番周折终于走通了,最大的收获不在这个双雕,而在于对USB的认识加深了理解
神农鼎
发表于 2023-3-29 08:54:43
恭喜,我看了都不敢回的USB, 晓奇兄 举重若轻 搞定了 !
晓奇兄,20年的老兄弟,下面您谁便选,就这些家当了,全部 【免费 + 包邮】 送您
1,芯片:1T 8051, 32位8051,各种封装的芯片
2,核心功能实验板:
屠龙刀-STC32G12K128核心功能实验板,MCU自带硬件USB下载, 支持SWD硬件仿真
开天斧-STC8H8K64U核心功能实验板,MCU自带硬件USB仿真,MCU自带硬件USB下载
3,STC-USB Link1D /【专业仿真器,全自动在线下载器/自动停电上电,脱机烧录器,USB转双串口工具】
加STC华南区客服刘经理QQ: 3398500488 ;微信:18106296592要求 【免费+包邮】 送
加STC华南区客服曹经理QQ:1933892258 ;微信:18106296595 要求 【免费+包邮】 送
加STC华东区客服聂经理QQ:2593903262;微信:18106296598要求 【免费+包邮】 送
加STC西北区客服孙经理QQ: 1347154513 ;微信:18106296593要求 【免费+包邮】 送
加STC华北区客服石经理QQ: 1638975601 ;微信:19952583876要求 【免费+包邮】 送
加STC华中区客服唐经理QQ:2571301708 ;微信:18106296589 要求 【免费+包邮】 送
加STC东北区客服张经理QQ:3141888640 ;微信:19952583265 要求 【免费+包邮】 送
工作时间:8:30-12:0013:00-17:30(周一 到 周五, 法定节假日除外)
晓奇
发表于 2023-3-29 11:07:24
神农鼎 发表于 2023-3-29 08:54
恭喜,我看了都不敢回的USB, 晓奇兄 举重若轻 搞定了 !
晓奇兄,20年的老兄弟,下面您谁便选,就这些家当 ...
谢谢神农鼎老兄,我这是没事干,被STC的技术吸引了,很多东西需要学习啊,客服已经与我联系了。非常感谢!学习中还会遇到很多问题,别嫌我事儿多就好,真诚为国产芯片崛起而感到自豪!
晓奇
发表于 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找不到
可以编译一下看看有没有遗漏的
写入芯片看看,一举成功在系统硬件管理器里面多了两个串口
读通高手的源代码是一个既痛苦又兴奋的过程,痛苦的是一开始很多东西无法理解--看不懂,兴奋的是经过不懈地努力逐渐投入了--懂了一点,
今天把这个修改的过程记录下来重新演示一遍,实际上就是一个学习提高的过程,高兴
32位8051-AI
发表于 2023-3-30 13:27:45
晓奇 发表于 2023-3-30 11:41
总结一下,我把修改部分整理出来给需要的同学参考,对转换其他代码有点用
为了稳妥起见把原工程文件复制一 ...
感谢分享,屠龙刀以及STC-USB Link1D今日已安排寄出,期待您的测试好评
神农鼎
发表于 2023-3-30 18:12:53
可以用STC-USB Link1D 来 SWD仿真 STC32G12K128的 USB,
要仿真USB, 那 SWD仿真接口要设置到其他I/O !
晓奇
发表于 2023-3-31 15:52:09
东西收到了,非常感谢。
屠龙刀核心板子,两个字:工整。
link1D插上就Ok,仿真功能连接试了一下也很顺利,单步等都很爽,第一次用硬件仿真,有点惊喜感的。
现在剩下一个问题:脱机下载好需要慢慢来,摸索一下
再次感谢STC的礼物!
32位8051-AI
发表于 2023-3-31 16:08:29
晓奇 发表于 2023-3-31 15:52
东西收到了,非常感谢。
屠龙刀核心板子,两个字:工整。
link1D插上就Ok,仿真功能连接试了一下也很顺利, ...
脱机下载也是非常方便的,我联系您