- 打卡等级:初来乍到
- 打卡总天数:4
- 最近打卡:2025-03-06 13:19:04
已绑定手机
注册会员
- 积分
- 65
|
第四章:USB不停电下载
常规的程序下载,需要按下P32,然后断电重启单片机,然后才能下载,对于代码调试来说有点繁琐,那么能不能快速下载呢? 有。
ISP软件直接点击下载按钮以后,实现程序直接的下载到单片机中!!! 不再需要断电,也不需要按下按钮….方便 ,快捷。.
那么如何实现这个功能呢,,往下看,图中例出了实现不停电下载的流程.
图1

看起来不复杂,,做起来也不复杂.
第一步. 下载USB库文件和USB库例程
根据官方的说明: Ai8051U根据所选的8位/32位模式可使用相同位数的库文件
例程中使用了STC32G的USB CDC库文件例程.
关于例程的说明 :
两大类 CDC 和 HID 建议个人使用CDC类型
两大类又分为,查询模式和中断模式.
第二步. 创建一个工程(移植)
添加头文件,将stc_usb_cdc_32.LIB, stc32_stc8_usb.h文件复制到工程文件夹中,然后在工程中添加stc_usb_cdc_32.LIB文件(需要将文件类型设置为*.*或*.LIB才能找到),并定义头文件:#incledu “stc32_stc8_usb.h”
在主函数中添加USB初始化函数:usb_init();
把命令参数添加进来:
char *USER_DEVICEDESC = NULL;
char *USER_PRODUCTDESC = NULL;
char *USER_STCISPCMD = "@STCISP#";
这里的"@STCISP#"是ISP软件中默认内部下载命令,这个也可以自定义哦,只要代码中设置的字符串和ISP软件中自定义命令设置相同即可.
图4

一个重要的寄存器设置!!!
P_SW2 |=0X80; //扩展RAM区特殊功能寄存器功能 打开 (EAXFR : 1)

相关中断的设置
IE2 |=0X80; //使能USB中断
EA = 1;//打开总中断
再添加USB配置是否完成的检测语句:
while (DeviceState != DEVSTATE_CONFIGURED); //等待USB完成配置
只有检测到USB配置完成以后,才能进行相关USB的操作,否则会出现意想不到的结果.
代码编写好以后,编译,下载到单片机中,就可以进行不断电进行下载了.

将ISP软件主界面中最下方的:当目标文件变化时自动加载并发送下载命令勾选上.
只要重新编译一下代码,,ISP软件就会自动的发送自定义命令到单片机,,单片机接收到这个自定义命令以后,就会自动重启到系统ISP区,然后自动下载HEX固件.
通过本次学习,掌握了不停电下载固件的方法
|
|