如何使用vscode代替keil5编辑多文件项目

如何使用vscode代替keil5编辑多文件项目

前提基础

  1. 了解如何使用keil5开发多文件项目,具体可以参考我的相关文章Keil5 如何创建51单片机多模块项目
  2. 了解c语言项目构建和基本语法
  3. 已经下载Keil5和vscode
  4. 了解vscode的简单使用
  5. 了解xml的基本知识

vscode插件安装

安装C/C++ Extension Pack插件

点击左边拓展按钮,搜索C/C++ Extension Pack并安装该插件

在这里插入图片描述

安装Keil Assistant插件

在这里插入图片描述

在该插件的安装界面,有关于该插件的使用方法,配置方法的详细介绍,读者们可以自行了解

Keil Assistant插件配置

安装界面点击设置按钮然后打开插件的配置

在这里插入图片描述

在配置页面填写自己Keil5可执行文件UV4.exe的绝对路径。第一个配置是C51的,第二个配置的是MDK的。

在这里插入图片描述

使用Keil5创建51单片机项目

  1. 打开文件资源管理器,先预先创建一个空的文件夹,文件名自定义即可
    在这里插入图片描述

  2. 打开Keil5,点击菜单栏Project然后选择New uVision Project
    在这里插入图片描述

  3. 在弹出的文件资源管理器中,选择并进入步骤一预创建的文件夹,然后在下方输入项目的名字,可以自定义,但通常使用通用的项目名字,例如:projecttemplate
    在这里插入图片描述

  4. 在弹出的对话框中,输入芯片搜索关键字,从搜索结果中选择相应的芯片类型,作者使用的是STC89C52芯片,读者需要选择自身开发板的芯片类型,最后点击ok按钮
    在这里插入图片描述

  5. 在弹出的对话框中点击否即可完成项目的创建。
    在这里插入图片描述

  6. 打开项目所在的目录,新创建的目录结构如下
    在这里插入图片描述

使用vscode进行项目的编辑

  1. 使用左侧Keil Assistant插件打开项目
    在这里插入图片描述

  2. 进入项目目录后选择keil5的项目文件,最后点击打开
    在这里插入图片描述

  3. 最后点击确定进入项目工作区目录
    在这里插入图片描述

  4. 最后打开效果如下
    在这里插入图片描述

创建项目模块

在项目工作区创建三个目录,userapppublic,效果如下

在这里插入图片描述

public模块主要保存一些常见的头文件、别名和函数。新建public.cpublic.h文件。以后编写其他模块时可以直接引用public.h

public.h文件:

#ifndef __PUBLIC_H__
#define __PUBLIC_H__

#include <REGX52.h>

// 定义常见数据类型别名
typedef unsigned int u16;
typedef unsigned char u8;

// 定义常见延时函数
void delay_10us(u16 ten_us);
void delay_1ms(u16 ten_us);
#endif

public.c文件

#include <intrins.h>
#include "public.h"

/*******************************************************************************
* 函 数 名       : delay_10us
* 函数功能		 : 延时函数,ten_us=1时,大约延时10us,@12.000MHz
* 输    入       : ten_us
* 输    出    	 : 无
*******************************************************************************/
void delay_10us(u16 ten_us)
{
    unsigned char i;
	while(ten_us--)
    {
        _nop_();
        _nop_();
        i = 27;
        while (--i);
    }
}

/*******************************************************************************
* 函 数 名       : delay_1ms
* 函数功能		 : 延时函数,ten_us=1时,大约延时1ms,@12.000MHz
* 输    入       : ten_us
* 输    出    	 : 无
*******************************************************************************/
void delay_1ms(u16 ten_us)	//@12.000MHz
{
	unsigned char i, j;

	while (ten_us--)
    {
        i = 12;
        j = 169;
        do
        {
            while (--j);
        } while (--i);
    }
}

app模块用来存放自己写的外设模块。以定时器模块为例

app目录下创建timer目录,接着往timer目录下添加timer0.ctimer0.h文件

timer0.c文件

#include "public.h"

// 定时器触发频率对应的寄存器初始化值,依次为每:1ms,100us,触发一次
// static unsigned char timer_init_value [][2] = {{0x18, 0xFC}, {0x9C, 0xFF}};

/**
* @brief 定时器0初始化,默认为1ms产生一次中断,可修改定时器初始值
* @param 无
* @retval 无
*/
void timer_0_init(void)
{
    // 只修改后四位,前四位代表Timer1
    TMOD &= 0xF0;
    TMOD |= 0x01;

    // 设置定时器初始值
    TL0 = 0x18;
    TH0 = 0xFC;

    // 设置溢出标志位有效
    TF0 = 0;

    // 使用TR0控制定时器
    TR0 = 1;

    // 中断开关及优先级
    ET0 = 1;
    EA = 1;
    PT0 = 0;
}

/*定时器中断函数模板,默认为每一秒执行操作
void Timer0_Routine() interrupt 1
{
	static unsigned int T0Count;
	TL0 = 0x18;		//设置定时初值
	TH0 = 0xFC;		//设置定时初值
	T0Count++;
	if(T0Count >= 1000)
	{
		T0Count=0;
		
	}
}
*/

timer0.h文件

#ifndef __TIMER_H__
#define __TIMER_H__

void timer_0_init(void);
#endif

user目录下创建main.c文件,用于存放主程序

main.c

#include "public.h"
#include "timer0.h"

void main()
{
    while (1)
    {
        
    }
}

最后效果如下

在这里插入图片描述

编写配置文件

配置,组是Keil项目的一个逻辑结构,如果不理解可以参考的我的文章Keil5 如何创建51单片机多模块项目

点击项目文件project.uvproj,往下拉到最后,可以看到,项目已经默认有一个组了。我们需要按照自己的项目模块创建组。
在这里插入图片描述

根据模块创建组

在xml配置文件中,删除默认组,创建我们自己的三个组,userapppublic,修改后如下

在这里插入图片描述

往各个组里面添加源文件,修改后如下

在这里插入图片描述

添加完源文件后,我们还需要添加头文件路径

找到头文件的配置位置,大约在314行,如下所示

在这里插入图片描述

找到位置后,填写我们的头文件路径,使用;进行分隔。修改后如下

在这里插入图片描述

配置生成Hex文件

使用CTRL+F快捷键搜索hex,可以快速找到相关配置

在这里插入图片描述

0代表不生成hex文件,1代表生成,我们修改其为1即可。

构建项目

点击Keil Assistant插件中的构建按钮即可构建项目,最后可以观察到控制台输出构建成功

在这里插入图片描述

至此,项目的基本框架已经构建成功,如果需要添加新的模块,在app目录下创建一个新的目录,接着添加源文件和头文件,最后修改xml配置文件即可。

解决vscode头文件找不到问题

首先需要知道的是,只要按照上面的步骤配置好xml文件,项目能够正确运行即可。解决头文件找不到的问题可以让vscode正确跳转相关文件并消除看的心烦的红色波浪线。

找不到C51相关的头文件

在这里插入图片描述

这是因为项目的c/c++的头文件配置不是特别准确,打开.vscode目录,然后打开c_cpp_properties.json文件。该文件用于保存c/c++项目的相关配置。

在这里插入图片描述

修改该行为"F:\\keil\\C51\\INC\\**“即可,报错是因为没有在INC目录下找到,REGX52.h的实际路径为"F:\keil\C51\INC\Atmel”,所以没有找到,我们在后面添加**,可以匹配该目录下面的所有文件。

在这里插入图片描述

新建模块然后在main.c文件中引用找不到头文件

新建模块文件后,我们直接在main.c文件中引用的话,是找不到的,因为我们并没有告诉编辑器我们的头文件在什么路径。我们往配置文件中添加${workspaceFolder}\\**即可,意思是在当前工作区寻找头文件。最后效果如下

在这里插入图片描述

分析与总结

读者们可能想知道Keil的xml项目文件该如何写,其实作者也不是很清楚,但我们需要知道,我们之前使用Keil开发时,添加相关模块时,软件自动帮我们完成了xml文件的编写。你可以查找资料或者使用Keil进行相关的操作后查看配置文件的变化,即可学会如何编写xml配置文件。除了C51,STM32也可以使用Keil Assistant插件进行编辑使用。

觉得作者写的不错的,可以点个赞,你的认可是我创作的动力。


© 2023 zhangproud@qq.com All Rights Reserved.
本文为博主原创文章,遵循CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

  • 23
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值