8051U学习打卡第三天:USB不停电烧录学习笔记
1.USB不停电烧录
1.1 AiCube生成不停电烧录最小代码(可直接查看规格书教程)
\qquad 8051U内部自带高速晶振,并且系统时钟使用的晶振频率是根据 AiCube软件烧录 时选择的频率为准!!!如下图1所示,所以在进行项目配置时除非特殊情况,否则可以无需配置CLK项目,如下图2所示,全部是灰色

图1 系统运行时工作频率

图2 CLK配置界面
\qquad 由于需要使用USB不停电烧录,所以需要使能USB外设,如下图3所示,其中USB协议推荐使用CDC而不是HID协议,虽然两者就是串口并且都可以进行USB不停电 烧录,但是CDC对比HID而言带宽高,支持大数据包传输,灵活性强,更适合进行程序的烧录;同时ISP下载命令可以自定义,不过这里如果自定义之后一定要记住!!!否则后面还是不能进行不停电烧录

图3 USB配置界面
\qquad 完成以上配置之后既可生成代码,如果需要其他功能可自行添加,这里我就使用第一堂课的LED点灯!!!
1.2 AiCube不停电烧录配置
\qquad 首先第一步就是要确保单片机进入烧录模式,并且电脑的串口链接到了单片机如下图4第一步;
\qquad 第二步就是进入Aicube的“收到用户命令后复位到ISP监控程序区”,根据配置工程的USB进行配置,配置时选择的是CDC协议就选择CDC,配置时是HID就选择HID;同时需要根据配置项目时的下载命令更改此处的自定义命令,如果使用默认就直接默认烧录就行,如下图4第二步。同时由于8051U串口默认识别成HID设备和需要不停电烧录,所以也需要√上剩下两个命令!!!

图4 AiCube不停电烧录配置
2.生成的系统初始化代码简单说明
EnableAccessXFR(); //使能访问扩展XFR
AccessCodeFastest(); //设置最快速度访问程序代码
AccessIXramFastest(); //设置最快速度访问内部XDATA
IAP_SetTimeBase(); //设置IAP等待参数,产生1us时基
\qquad 这些就不进行说明了,同第一天学习里面的初始化,代码生成时也给出来简单注释,所有寄存器都可以在规格书找到
USBLIB_Init() //USB库初始化
{
usb_init(); //初始化USB模块
USB_SetIntPriority(0); //设置中断为最低优先级
set_usb_ispcmd("@STCISP#"); //设置USB不停电下载命令
}
\qquad 此处的USBLIB_Init();函数是对USB进行初始化,使得支持USB不停电烧录,里面的函数只有这几个,
- 首先是usb_init();函数,这个函数在stc_usb_cdc_32g.lib文件里面,暂时还没有学到,等到了USB_CDC章节再做笔记;
- USB_SetIntPriority(0);备注说明了是根据形参设置中断优先级的函数;
- set_usb_ispcmd("@STCISP#");这里面的参数就是配置自定义下载命令的命令,即使生成完成项目之后,依然可以回到Aicube或者直接在工程里面更改不停电烧录命令,同时也需要在Aicube烧录配置那里同时更改。