32G-烧录-不停电下载方法
一、手动上电复位进行下载
1. 硬件部分
如图所示:
- 使用TYPE-C数据连接核心板到电脑;
- 按住P3.2口按键不放;
- 按一下电源OFF按键(按下-松开),然后可松开P3.2口按键;
正常情况下在STC-ISP软件上就可以识别出“STC USB Writer (HID1)”设备:
2. 软件部分
如图所示:
- 选择芯片型号;
- 打开需要烧录的程序文件;
- 设置硬件选项;
- 然后就可以点击“下载/编程”按钮开始下载。
下载完成后右下角信息框会提示“操作成功!”。
二、通过USB HID指令复位并下载
1. 添加库文件
在项目栏程序组上点击鼠标右键,选择”Add Existing Files to Group ‘Source Group 1’…”:
在弹框里选择库文件,并添加到项目里:
2. 添加软件配套代码
添加USB调试及复位所需定义:
在初始化程序里添加 USB 初始化及时钟源启动程序:
主循环或者中断等能够及时周期性处理程序里添加 USB 接收判断以及应答指令:
注意:如果如果程序里有对IE2寄存器里USB以外的中断进行位操作使能的话,在IE2相关的中断位操作使能后,需要重新设置EUSB:
EUSB = 1; //IE2相关的中断位操作使能后,需要重新设置EUSB
至此,配套软件代码添加完毕。
3. 发送指令触发MCU复位并自动下载
打开STC-ISP软件(V6.89E以上版本),选择芯片型号、打开需要烧录的程序文件、设置好硬件选项后,切换到“收到用户命令后复位到ISP监控程序区”标签:
如下图所示,选择“USB(HID)模式”,设置默认VID: 34BF,PID: FF01;
设置自定义命令:@STCISP#
取消 “Hex” 选项,命令应与程序里的定义相同:
char *USER_STCISPCMD = "@STCISP#"; //设置自动复位到ISP区的用户接口命令
点击“发送用户自定义命令并开始下载”按钮,或者在勾选“每次下载前都先发送自定义命令”选项情况下也可点击“下载/编程”按钮开始下载。
(此步骤需要完成前两步,并将编译的程序通过手动上电复位的方式下载到芯片后才能使用)
正常情况下芯片收到指令后会自动复位到“STC USB Writer (HID1)”模式并开始下载。
三、通过P3.2口按键触发下载模式
1. 添加软件配套代码
添加按键触发功能所需定义:
添加P3.2口按键长按1秒触发软件复位,进入USB下载模式函数:
在1ms周期性执行的中断或者主循环里调用按键扫描函数:
或者
至此,配套软件代码添加完毕。
2. 触发烧录模式并下载
完成以上步骤并将编译的程序通过手动上电复位的方式下载到芯片一次以后,就可通过长按P3.2口按键方式自动触发进入USB下载模式:
注意,需要将“收到用户命令后复位到ISP监控程序区”标签的设置,切换到“串口模式”或者取消“每次下载前都先发送自定义命令”选项,然后再点击“下载/编程”按钮开始下载。
4. 复位后执行区域设置
IAP控制寄存器(IAP_CONTR)
软件复位MCU,可通过IAP_CONTR寄存器的bit6选择复位后执行区域。
SWBS位置0,软件复位后进入用户程序区域;
SWBS位置1,软件复位后进入ISP程序区域(USB下载模式):
符号 |
地址 |
B7 |
B6 |
B5 |
B4 |
B3 |
B2 |
B1 |
B0 |
IAP_CONTR |
C7H |
IAPEN |
SWBS |
SWRST |
CMD_FAIL |
- |
- |
- |
- |
SWBS:软件复位启动选择
0:软件复位后从用户程序区开始执行代码。用户数据区的数据保持不变。
1:软件复位后从系统ISP区开始执行代码。用户数据区的数据会被初始化。
SWRST:软件复位触发位
0:对单片机无影响
1:触发软件复位
复位标志寄存器(RSTFLAG)
看门狗复位、复位脚复位等硬件复位,默认会使芯片进入USB下载模式,可在初始化代码里将 RSTFLAG 的bit2写1,清除SWRSTF标志,设置复位后需要检测P3.2的状态选择运行区域进行避免:
符号 |
地址 |
B7 |
B6 |
B5 |
B4 |
B3 |
B2 |
B1 |
B0 |
RSTFLAG |
7EFE99H |
- |
|
|
LVDRSTF |
WDTRSTF |
SWRSTF |
ROMOVF |
EXRSTF |
四、通过USB CDC指令复位并下载
1.添加库文件
在项目栏程序组上点击鼠标右键,选择”Add Existing Files to Group ‘Source Group 1’…”:
在弹框里选择库文件,并添加到项目里:
2. 添加必要程序
在程序起始位置添加复位命令定义:
char *USER_DEVICEDESC = NULL;
char *USER_PRODUCTDESC = NULL;
char *USER_STCISPCMD = "@STCISP#"; //设置自动复位到ISP区的用户接口命令
在初始化程序里添加USB时钟源启动,USB模块进行初始化程序:
主循环里添加USB接收判断以及应答指令:
至此USB CDC数据输入/输出功能的必要准备工作完成。
3. 发送指令触发MCU复位并自动下载
打开STC-ISP软件(V6.90H以上版本),选择芯片型号、打开需要烧录的程序文件、设置好硬件选项后,切换到“收到用户命令后复位到ISP监控程序区”标签:
如下图所示,选择“串口模式”,设置默认波特率、校验位、停止位;
设置自定义命令:@STCISP#
取消 “Hex” 选项,命令应与程序里的定义相同:
char *USER_STCISPCMD = "@STCISP#"; //设置自动复位到ISP区的用户接口命令
点击“发送用户自定义命令并开始下载”按钮,或者在勾选“每次下载前都先发送自定义命令”选项情况下也可点击“下载/编程”按钮开始下载。
(此步骤需要将支持自动下载功能的程序通过手动上电复位的方式下载到芯片后才能使用)
注意:使用CDC接口触发MCU复位并自动下载功能,需要勾选设置:下次使用 STC HID接口进行ISP下载:
正常情况下芯片收到指令后会自动复位到“STC USB Writer (HID1)”模式并开始下载: