Keil C51工程转VSCode Keil Assistant开发全过程

Keil C51工程转VSCode Keil Assistant开发全过程


  • 📺编译-烧录演示:
    在这里插入图片描述
📋转VSCODE开发环境主要原因可能代码提示以及代码跳转功能,或者其他。
  • 🌿代码提示功能:
    在这里插入图片描述
  • 🌿代码跳转功能
    在这里插入图片描述

✅Keil C51工程转VSCode准备实施条件

  1. 电脑端已经实现了Keil C51开发。
  2. 电脑端已经安装了VSCODE软件。
  3. 电脑端已经安装了python。

🚩VSCode配置过程

  1. 在VSCode里面安装Keil Assistant插件。
    在这里插入图片描述
  2. 给Keil Assistant插件配置Keil软件安装绝对路径。
    在这里插入图片描述

在这里插入图片描述
3. 依赖C\C++插件在这里插入图片描述

  • 🔧stcgal烧录工具安装:(依赖python pip): pip install stcgal

在这里插入图片描述

🌻Keil工程转VSCODE

  1. 在转入到VSCODE前,先在Keil软件中将工程创建起来,并勾选生成HEX选项。
    在这里插入图片描述

  2. 编译一遍,让其生成HEX的路径:creating hex file from ".\Objects\STC_Printf"...
    在这里插入图片描述

  3. 在工程文件夹内,右键,选择通过VSCODE打开
    在这里插入图片描述
    在这里插入图片描述

  4. 添加头文件路径。
    在这里插入图片描述

  • 🔰如果是第一次打开,显示波浪线,点击小灯泡,选择编辑includePath设置。
    在这里插入图片描述
    在这里插入图片描述

  • 🔨编译工程
    在这里插入图片描述
    在这里插入图片描述

  • 🛠命令行烧录

stcgal -p COM10 -P stc15 .\Objects\STC_Printf.hex
或者
stcgal -a -p COM10 -P stc15 .\Objects\STC_Printf.hex
//-a 用来控制串口芯片DTR 引脚让目标芯片复位,如果目标芯片启用了外部复位引脚P54时,可以手动按复位按键后,即可进入下载阶段。

在这里插入图片描述

  • -p COM10:串口端口号;
  • -P stc15:烧录目标芯片型号;
  • .\Objects\STC_Printf.hex:烧录文件路径。
    在这里插入图片描述
    • 🗝烧录命令:stcgal -p COM10 -P stc15 .\Objects\STC_Printf.hex

在这里插入图片描述

⚡如果你的目标板没有实现UART DTR 流控制(不带免冷启动电路),看到 Wait for mcu, please cycle power: 之后,这是在提示你:请手动复位 mcu,让单片机进入 isp 模式
    • 🔑烧录命令:stcgal -a -p COM10 -P stc15 .\Objects\STC_Printf.hex
      在这里插入图片描述
⚡如果你的目标板实现了UART DTR 流控制(带免冷启动电路),就不要添加带-a的参数,不然还需要去复位一次单片机,看到 Waiting for MCU: 之后,这是在提示你:请手动复位 mcu,让单片机进入 isp 模式;需要手动去复位或者重启目标板。(可参考前面的相关开源开发板电路,了解STC免冷启动电路设计)

在这里插入图片描述

在这里插入图片描述

  • 📓stcgal命令行使用帮助
C:\Users\Administrator>stcgal -h
usage: stcgal [-h] [-a] [-r RESETCMD] [-P {stc89,stc12a,stc12b,stc12,stc15a,stc15,stc8,usb15,auto}] [-p PORT]
              [-b BAUD] [-l HANDSHAKE] [-o OPTION] [-t TRIM] [-D] [-V]
              [code_image] [eeprom_image]

stcgal 1.6 - an STC MCU ISP flash tool
(C) 2014-2018 Grigori Goronzy and others
https://github.com/grigorig/stcgal

positional arguments:
  code_image            code segment file to flash (BIN/HEX)
  eeprom_image          eeprom segment file to flash (BIN/HEX)

options:
  -h, --help            show this help message and exit
  -a, --autoreset       cycle power automatically by asserting DTR
  -r RESETCMD, --resetcmd RESETCMD
                        shell command for board power-cycling (instead of DTR assertion)
  -P {stc89,stc12a,stc12b,stc12,stc15a,stc15,stc8,usb15,auto}, --protocol {stc89,stc12a,stc12b,stc12,stc15a,stc15,stc8,usb15,auto}
                        protocol version (default: auto)
  -p PORT, --port PORT  serial port device
  -b BAUD, --baud BAUD  transfer baud rate (default: 19200)
  -l HANDSHAKE, --handshake HANDSHAKE
                        handshake baud rate (default: 2400)
  -o OPTION, --option OPTION
                        set option (can be used multiple times, see documentation)
  -t TRIM, --trim TRIM  RC oscillator frequency in kHz (STC15+ series only)
  -D, --debug           enable debug output
  -V, --version         print version info and exit

⛳注意事项

  • 🍁在Keil工程中,设置里面如果没有勾选生成HEX文件选项,那么在VSCODE里面,编译时也不会生成Hex文件的,本质上,在VSCODE里面,编译还是调用的Keil软件本身。
    在这里插入图片描述

🌼测试工程

  • 🔖基于stc15w408as单片机。
//STC15W408AS,512字节的RAM,8K FLASH
//晶振频率:11.0592MHz
//波特率:115200
//stcgal -p COM10 -P stc15 .\Objects\STC_Printf.hex
#include <STC15F2K60S2.H>
#include "intrins.h"
#include "stdio.h"

bit busy;
//#define     FOSC    11059200UL
//#define     BAUD    115200

//sfr P_SW1   = 0xA2;             //外设功能切换寄存器1

#define S1_S0 0x40              //P_SW1.6
#define S1_S1 0x80              //P_SW1.7


void Delay500ms();
void UartInit(void);        //115200bps@11.0592MHz
void SendData(unsigned char dat);
void SendString(char *s);

void main()
{
    P1M0 = 0x00;
    P1M1 = 0x00;
    P3M0 = 0x00;
    P3M1 = 0x00;
    UartInit();
    Delay500ms();
    SendString("STC15F2K60S2\r\nUart Test !\r\n");

    while (1)
    {
        P17 = 0x01;
        Delay500ms();
        printf("stcgal Tool Programmer \n\r");
        P17 = 0x00;
        Delay500ms();
        printf("Hello World \r\n");
//  SendString("STC15F2K60S2\r\nUart Test !\r\n");
 Delay500ms();
 printf("perseverance51 \n\r");
    }

}

void UartInit(void)     //115200bps@11.0592MHz
{
    SCON = 0x50;        //8位数据,可变波特率
    AUXR |= 0x01;       //串口1选择定时器2为波特率发生器
    AUXR &= 0xFB;       //定时器时钟12T模式
    T2L = 0xFE;         //设置定时初始值
    T2H = 0xFF;         //设置定时初始值
    AUXR |= 0x10;       //定时器2开始计时
}

/*----------------------------
发送串口数据
----------------------------*/
void SendData(unsigned char dat)
{
     SBUF = dat;
    while (!TI); //等待前一个数据发送完成
    TI = 0;//清除发送标志
}

char putchar(char dat)
{
    SendData(dat);
    return dat;
}
/*----------------------------
发送字符串
----------------------------*/
void SendString(char *s)
{
    while (*s)                  //检测字符串结束标志
    {
        SendData(*s++);         //发送当前字符
    }
}

void Delay500ms()       //@11.0592MHz
{
    unsigned char i, j, k;
    _nop_();
    _nop_();
    i = 22;
    j = 36;
    k = 227;
    do
    {
        do
        {
            while (--k);
        }
        while (--j);
    }
    while (--i);
}




  • 11
    点赞
  • 72
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Keil C51环境导入Proteus的过程主要包括以下几个步骤。 首先,我们需要确保已经在计算机上安装了Proteus软件和Keil C51软件,并且两者都能正常运行。 接下来,打开Keil C51软件,创建一个新的工程。可以选择File -> New Project菜单项,然后在弹出的对话框选择要保存工程的路径和文件名。 在新建工程的对话框,选择适合所需的芯片类型,并选择合适的目标设备模型。 然后,右击"Target"下面的文件夹,选择"Add Existing Group to Project"菜单项,然后选择要导入的文件夹或者文件。在Proteus,可以选择包含C代码和相关文件的文件夹,并将其添加到Keil C51工程。 添加完文件后,还需要在Keil C51配置编译器和连接器选项,以确保正确编译和链接工程。可以选择Options -> Compiler菜单项,然后根据需要配置编译选项。同样,可以选择Options -> Linker菜单项,然后根据需要配置链接选项。 最后,点击Keil C51工具栏上的"Build"按钮,进行编译和链接工程。如果没有错误,生成的可执行文件就可以在相应的目录找到。 完成上述步骤后,就可以将生成的可执行文件导入到Proteus软件进行仿真或调试了。可以打开Proteus软件,新建一个电路图,并在相应的位置添加一个"8051"型芯片。然后,双击该芯片,点击"Edit Properties"按钮,选择"Program File"选项,然后选择要导入的可执行文件。 点击"OK"按钮,即可将Keil C51生成的可执行文件导入到Proteus,并进行仿真或调试。 总结来说,将Keil C51生成的可执行文件导入到Proteus的过程主要包括在Keil C51创建工程、添加文件、配置编译和链接选项,然后编译和链接工程,最后将生成的可执行文件导入到Proteus进行仿真或调试。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值