ygyfy 发表于 2024-6-6 16:04:11

soma 发表于 2024-6-6 15:56
烧写前可以检测一下型号。会同步单片机型号

是的,确实这样,只是因为我之前没有这样的操作,看到视频里面说,记录下

ygyfy 发表于 2024-6-6 16:22:48

第四集

其实,之前看的几集视频,笔记是真笔记,手写摘抄的,那么,就直接拍照上传记录吧,外加做实验的一点小记录,请忽略字写的丑{:4_167:}






特殊功能寄存器(SFR)区域C语言代码的使用和定义方法


没有试验箱,前阵子申请了一块屠龙刀板,在此感谢华北区石经理!因为此板出厂led灯为3.2-3.5,2.0-2.7,所以就点亮2.0和3.2吧,其实一开始是写的3.0然后发现他被占用且没有灯,然后就改成3.2了。
代码截图



点亮板子照片


尴尬的是,第一次编译出错,发现sfr和sbit语句后面都没加分号{:4_198:}

ygyfy 发表于 2024-6-6 16:24:59

{:4_198:}图片横着,拍照的时候竖着的,传上去后成横向了,不知道怎么旋转,在电脑里旋转看着正常,回复高级模式里面也看着正常,发出来就这样了,有懂得的指导下

soma 发表于 2024-6-6 18:11:05

芯片还自己补上去了啊

ygyfy 发表于 2024-6-6 19:00:47

soma 发表于 2024-6-6 18:11
芯片还自己补上去了啊
补焊了两个TJA1050及其周边几个小元件做can通讯实验

ygyfy 发表于 2024-6-9 22:29:09

第四集下

我这个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()未定义,因为函数执行是按照从上到下来的

ygyfy 发表于 2024-6-10 05:26:29

本帖最后由 ygyfy 于 2024-6-10 05:29 编辑

实验照教程做,但是,如果,文件的版本不一样,比如,这个CDC实验,如果使用的LIB文件不同,就会产生错误,编译不通过。提示如下


Rebuild target 'Target 1'
compiling led.c...
linking...
*** ERROR L127: UNRESOLVED EXTERNAL SYMBOL
    SYMBOL:usb_init
    MODULE:.\Objects\led.obj (led)
*** ERROR L128: REFERENCE MADE TO UNRESOLVED EXTERNAL
    SYMBOL:usb_init
    MODULE:.\Objects\led.obj (led)
    ADDRESS: FF00A7H
Program Size: data=8.0 edata+hdata=268 xdata=0 const=35 code=182



暂不明确原因所在,只是知道,用附件里的lib文件一般没事,用屠龙刀例程和试验箱里的lib文件就容易出问题,已知至少三种lib文件,文件大小,修改时间(原文件修改时间)都不同

qike009 发表于 2024-6-10 06:34:09

ygyfy 发表于 2024-6-10 05:26
实验照教程做,但是,如果,文件的版本不一样,比如,这个CDC实验,如果使用的LIB文件不同,就会产生错误, ...

加油啊

soma 发表于 2024-6-10 22:35:30

ygyfy 发表于 2024-6-10 05:26
实验照教程做,但是,如果,文件的版本不一样,比如,这个CDC实验,如果使用的LIB文件不同,就会产生错误, ...

用2个不同板的lib文件编译都没问题啊

ygyfy 发表于 2024-6-10 23:36:41

soma 发表于 2024-6-10 22:35
用2个不同板的lib文件编译都没问题啊

我试过编译出问题的时候直接复制冲哥附件里的demo.c文件的内容(除了复制c文件的内容其余都不做改变,例如其他c文件内容,引用的文件,lib文件,这些都不变更)其余保持不变,也一样编译错误。但是如果,把冲哥的lib文件换进去,就没事。暂时没发现其他规律,发现后再发帖
页: 1 [2] 3 4 5 6
查看完整版本: 冲哥视频 《STC32位8051单片机原理及应用》学习打卡【已送实验箱】