第四集下
我这个STC32G128手册跟视频的略有不同,章节是5.16 用户程序复位到系统区进行USB模式ISP下载的方法(不停电),参考stc32g128工具箱9.4版第76个例程。
comm文件夹里的文件也不一样,只有两个文件STC32G.H和STC32G.INC,所以复制的是这个试验箱文件夹里的src文件夹下面的文件。
comm文件下面的文件
STC32G试验箱9.4-DEMO-CODE-20230309 试验箱9.4\76-通过USB HID协议打印数据信息-可用于调试\src文件夹下面文件
按照视频教程进行编译完成后一堆警告
网上搜索
报错原因这是程序中存在定义但未被调用的函数导致的警告;
Note:警告不会影响程序的编译,但如果出现这个,建议查看一下程序中有哪些函数代码会编译但其实实际上并未被调用; 实际上可以使用。 作业
- #include "src/stc.h"
- #include "src/usb.h"
-
- //sfr P3=0xB0;
- //sfr P2=0xA0;
- //sfr P3M0=0xB2;
- //sfr P3M1=0xB1;
- //sfr P2M0=0x96;
- //sfr P2M1=0x95;
-
- //sbit P20=P2^0; //位地址声明,s小写,P大写
- //sbit P33=P3^3;
-
- void sys_init();
-
- //USB调试及复位所需定义
- char *USER_DEVICEDESC = NULL;
- char *USER_PRODUCTDESC = NULL;
- char *USER_STCISPCMD = "@STCISP#"; //设置自动复位到ISP区的用户接口命令
-
- void main()
- {
- // P3M0=0x00; //设置为准双向口
- // P3M1=0x00;
- // P2M1=0x00;
- // P2M0=0X00;
-
- sys_init();
- usb_init(); //USB初始化
- EA = 1;
-
- while(1)//无限循环
- {
- P2=0;
- P33=0;
- P34=0;
- P35=0;
- }
- }
-
- void sys_init()
- {
- WTST = 0; //设置程序指令延时参数,赋值为0可将CPU执行指令的速度设置为最快
- EAXFR = 1; //扩展寄存器(XFR)访问使能
- CKCON = 0; //提高访问XRAM速度
-
- 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;
-
- //设置USB使用的时钟源
- IRC48MCR = 0x80; //使能内部48M高速IRC
- while (!(IRC48MCR & 0x01)); //等待时钟稳定
- }
复制代码
因为我没有试验箱,用的是屠龙刀开发板,所以点亮的是3.3~3.5,2.0~2.7端口
添加函数 void sys_init() { WTST = 0; //设置程序指令延时参数,赋值为0可将CPU执行指令的速度设置为最快 EAXFR = 1; //扩展寄存器(XFR)访问使能 CKCON = 0; //提高访问XRAM速度
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; //设置USB使用的时钟源 IRC48MCR = 0x80; //使能内部48M高速IRC while (!(IRC48MCR & 0x01)); //等待时钟稳定 } 这段函数一般放在void main ()之前,否则应在void main ()之前写上void sys_init()以表示后面有这个函数,否则会出现void sys_init()未定义,因为函数执行是按照从上到下来的 |