找回密码
 立即注册
查看: 986|回复: 4

建议提供的范例再多些注释

[复制链接]
  • TA的每日心情
    开心
    10 小时前
  • 签到天数: 145 天

    [LV.7]常住居民III

    67

    主题

    811

    回帖

    2678

    积分

    金牌会员

    积分
    2678
    发表于 2023-1-14 11:46:29 | 显示全部楼层 |阅读模式
    本帖最后由 xxkj2010 于 2023-1-14 11:48 编辑

        STC提供的范例为我们使用STC单片机提供极大的方便,但在实际应用中,发现注释偏少。
        对于初次到手的芯片,在寄存器超多的情况下,对每个寄存器的定义、配置要一个一个地看手册,一个一个地研究,的确很浪费时间,所以大家首选的方法是使用公司提供的范例,然后根据需要再修改范例,以实现自己所需要的功能。
        但在使用范例中,发现一个问题,就是注释偏少。对于注释偏少的范例,大佬一般没什么,不觉得看代码很累,但对于我们这些菜鸟来说,的确很辛苦。例如本人前两天使用 STC8H8K64U-DEMO-CODE\61-CDC(Communication Device Class)协议范例,这个范例是将USB配置成虚拟串口,实现PC端向USB-CDC发送数据时,这些数据会转发到串口2,但在实际中P10 P11引脚没有串口输出,结果分析范例,才发现在uart_init()中,串口2的引脚被影射到P46 P47,于是将P_SW2 |= 1;注释掉,随即P11引脚输出了串口数据。幸好 P_SW2 |= 1; 后面有注释  // UART2 switch to: 1: P4.6 P4.7  ,这真的为我们阅读代码提供极大的方便。
    000.jpg

        但又想将这个范例改成电脑向USB-CDC发送数据,然后单片机又通过USB-CDC虚拟串口向电脑端原数据返回,想看看是哪个函数或哪些语句实现这个功能,在没有注释的情况,仿佛发现有下面这些代码段可以实现数据原路返回:
            IE2 &= ~0x80; // EUSB = 0;
            UsbInBusy = 1;
            usb_write_reg(INDEX, 1);
            cnt = 0;
            while (TxRptr != TxWptr)
            {
                usb_write_reg(FIFO1, TxBuffer[TxRptr++]);
                cnt++;
                if (cnt == EP1IN_SIZE)
                    break;
            }
            usb_write_reg(INCSR1, INIPRDY);
            IE2 |= 0x80; // EUSB = 1;
    001.jpg
    各位大佬,以上看法,有不对的请多多指教,谢谢!

    回复 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 08:39
  • 签到天数: 102 天

    [LV.6]常住居民II

    33

    主题

    161

    回帖

    360

    积分

    中级会员

    积分
    360
    发表于 2023-1-16 15:24:58 | 显示全部楼层
    既然是初学,建议多看看手册,手册里的范例程序比ISP里面的的范例程序注释多一些。
    手册看多了,问题就少了,这是我的一个体会,我也是一个初学者,愿与你共勉。

    点评

    正解  发表于 2023-1-16 15:29
  • TA的每日心情
    开心
    10 小时前
  • 签到天数: 145 天

    [LV.7]常住居民III

    67

    主题

    811

    回帖

    2678

    积分

    金牌会员

    积分
    2678
     楼主| 发表于 2023-1-17 11:22:21 | 显示全部楼层
    康辉55AA 发表于 2023-1-16 15:24
    既然是初学,建议多看看手册,手册里的范例程序比ISP里面的的范例程序注释多一些。
    手册看多了,问题就少了 ...

    当然一定要看手册的,否则看代码也不知道是什么意思、什么道理。
    我看USB中断程序,就是一边看代码,一边查找寄存器,再看该寄存器的功能与应用,最后再自行注释,这样花费很多的时间。
    如果有注释,我们看手册方向性比较强。这样是辛苦一人,方便大家。

    该用户从未签到

    3

    主题

    51

    回帖

    473

    积分

    中级会员

    积分
    473
    发表于 2023-4-11 19:16:18 | 显示全部楼层
    本帖最后由 晓奇 于 2023-4-11 19:51 编辑

    抓住不熟悉的寄存器、特殊位搜索手册就是最快的学习过程,等到把一个陌生的程序注释一遍以后你会发现“原来是这样”;p
    读CDC虚拟收发,最好的例程是那个虚拟示波器接口的那个STC32G12K128-DSO-USB-CDC-PC-480x320-V2-opencode-20220819
    花一点时间把里面的示波器部分去掉找出他与电脑间的联系,这里的收发非常清晰,我做了一点注释,给你做个参考。
    我喜欢独立的代码,不喜欢用lib,没用的东西背了一大堆,所以想办法找可以抽出来的cdc代码。
    32G的简单转换修改一下寄存器的表示形式,做了8H的代码


    28-STC32GCDC基础接口带一键ISP.zip

    4.67 KB, 下载次数: 28

    28-8h8k64uCDC基础接口带一键ISP.zip

    39.18 KB, 下载次数: 30

    回复 支持 反对 送花

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2024-4-20 19:13 , Processed in 0.060698 second(s), 44 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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