学习笔记|添加型号和头文件|下载程序(手动方式)| 通过P3.2口按键触发|通过USB指令复位并自动下载|STC32G单片机视频开发教程(冲哥)|第三集-2:三种下载方式

7.第一个工程的编译和下载

以E:\STC32\STC32G-DEMO-CODE-V9.6-20230425\01.1-用P6口做跑马灯-入门版为例,选择C语言版本例程:
在这里插入图片描述
打开工程文件:sample.uvproj
在这里插入图片描述
build:
在这里插入图片描述

添加型号和头文件到Keil

使用Keil之前需要先安装STC的仿真驱动。STC的仿真驱动的安装步骤如下:
首先开 STC的ISP下载软件,然后在软件右边功能区的“Keil仿真设置”页面中点击“添加型号和头文件到Keil中添加STC仿真器驱动到Keil中”按钮:
在这里插入图片描述

将目录定位到Keil软件的安装目录,然后确定。
头文件默认复制到Keil安装目录下的“C251\INC\STC”目录中
在这里插入图片描述
在C代码中使用***#include “STC32GH” //#include ***进行包含均可正确使用。

下载程序(手动方式1)

部分系统需要安装USB驱动,可在STC-ISP菜单中找到。
将板子通过USB线链接电脑,软件中选择时钟为24Mhz(程序定义):

#define MAIN_Fosc       24000000L   //定义主时钟24MHZ,软件按此设置

按下P3.2按钮,此时按下并松开OFF按钮,在松开P3.2进入USB下载模式(可参考:屠龙刀-烧录-不停电下载-仿真使用说明.pdf):
裸板为下载代码时必须使用纯手动方式进行下载,之后配合代码支持,可以选择其他方式。
在这里插入图片描述
如果信息显示窗格内出现“单片机型号错误”,则需要重新选择正确的单片机。
最简下载电路及步骤参考如下:
在这里插入图片描述

自动下载的设置(通过USB指令复位并下载)

还可参考:学习笔记|LED点亮原理|自动下载最小工程的实现及bug排查思路|USB-HID|USB-CDC实现|STC32G单片机视频开发教程(冲哥)|第四集-下:点亮LED

2.1 添加库文件

在项目栏程序组上点击鼠标右键,选择"Add Existing Files to Group ‘Source Group 1’…":
在弹框里选择库文件(stc_usb_hid_32g.LIB),并添加到项目里。

2.2 添加软件配套代码

添加USB调试及复位所需定义∶

//USB调试及复位所需定义
char *USER_DEVICEDESC = NULL;
char *USER_PRODUCTDESC = NULL;
char *USER_STCISPCMD = "@STCISP#";                      //设置自动复位到ISP区的用户接口命令

在初始化程序里添加USB初始化及时钟源启动程序:

#include "stc.h"  //调用头文件
#include "usb.h"

//USB调试及复位所需代码-----
	sys_init();
	usb_init();	//初始化USB代码
	EA = 1;

void sys_init()   //函数定义
{
    WTST = 0;  //设置程序指令延时参数,赋值为0可将CPU执行指令的速度设置为最快
    EAXFR = 1; //扩展寄存器(XFR)访问使能
    CKCON = 0; //提高访问XRAM速度

    //设置USB使用的时钟源
    IRC48MCR = 0x80;    //使能内部48M高速IRC
    while (!(IRC48MCR & 0x01));  //等待时钟稳定
}

注意:如果如果程序里有对IE2寄存器里USB以外的中断进行位操作使能的话,在IE2相关的中断位操作使能后,需要重新设置EUSB:
在这里插入图片描述
至此,配套软件代码添加完毕。

2.3 发送指令触发MCU复位并自动下载

打开STC-ISP软件(V6.89E以上版本)﹐选择芯片型号、打开需要烧录的程序文件、设置好硬件选项后,切换到“收到用户命令后复位到ISP监控程序区"标签:
如下图所示,选择"USB(HID)模式",设置默认VID:34BF, PID:FF01;
设置自定义命令: @STCISP#
取消“Hex”选项,命令应与程序里的定义相同:

char *USER_STCISPCMD = "@STCISP#";                      //设置自动复位到ISP区的用户接口命令

点击"发送用户自定义命令并开始下载"按钮,或者在勾选"每次下载前都先发送自定义命令”选项情况下也可点击“下载/编程"按钮开始下载。
(此步骤需要完成前两步,并将编译的程序通过手动上电复位的方式下载到芯片后才能使用)

通过P3.2口按键触发下载模式

3.1 添加软件配套代码:

添加按键触发功能所需定义∶

//P3.2口按键复位所需变量
bit Key_Flag;
u16 Key_cnt;

添加P3.2口按键长按1秒触发软件复位,进入USB下载模式函数:

//========================================================================
// 函数: void KeyResetScan(void)
// 描述: P3.2口按键长按1秒触发软件复位,进入USB下载模式。
// 参数: none.
// 返回: none.
// 版本: VER1.0
// 日期: 2022-6-11
// 备注:
//========================================================================
void KeyResetScan(void)
{
    if(!P32)
    {
        if(!Key_Flag)
        {
            Key_cnt++;
            if(Key_cnt >= 1000)		//连续1000ms有效按键检测
            {
                Key_Flag = 1;		//设置按键状态,防止重复触发

                USBCON = 0x00;      //清除USB设置
                USBCLK = 0x00;
                IRC48MCR = 0x00;

                delay_ms(10);
                IAP_CONTR = 0x60;   //触发软件复位,从ISP开始执行
                while (1);
            }
        }
    }
    else
    {
        Key_cnt = 0;
        Key_Flag = 0;
    }
}

在1ms 周期性执行的中断或者主循环里调用按键扫描函数:

while (1)
    {
        KeyResetScan();
        delay_ms(1);
    }

或者:

void timer0_int(void) interrupt 1  //1ms 中断函数
{
    KeyResetScan();   //P3.2口按键触发软件复位,进入USB下载模式,不需要此功能可删除本行代码
}

3.2 触发烧录模式并下载

完成以上步骤并将编译的程序通过手动上电复位的方式下载到芯片一次以后,就可通过长按P3.2口按键方式自动触发进入USB下载模式(切换到“收到用户命令后复位到ISP监控程序区"标签):

选择USB-CDC/串口模式,点击“发送用户自定义命令并开始下载”或者“下载/编程”即可下载程序。
在这里插入图片描述

注意,需要将“收到用户命令后复位到ISP监控程序区"标签的设置,切换到"串口模式"或者取消“每次下载前都先发送自定义命令"选项,然后再点击“下载/编程"按钮开始下载。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

打酱油的工程师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值