赞
踩
vscode
代替keil5
编辑多文件项目
vscode
代替keil5
编辑多文件项目C/C++ Extension Pack
插件点击左边拓展
按钮,搜索C/C++ Extension Pack
并安装该插件
Keil Assistant
插件在该插件的安装界面,有关于该插件的使用方法,配置方法的详细介绍,读者们可以自行了解
Keil Assistant
插件配置在安装
界面点击设置
按钮然后打开插件的配置
在配置页面填写自己Keil5可执行文件UV4.exe
的绝对路径。第一个配置是C51
的,第二个配置的是MDK
的。
打开文件资源管理器,先预先创建一个空的文件夹,文件名自定义即可
打开Keil5,点击菜单栏Project
然后选择New uVision Project
在弹出的文件资源管理器中,选择并进入步骤一
预创建的文件夹,然后在下方输入项目的名字
,可以自定义,但通常使用通用的项目名字,例如:project
、template
在弹出的对话框中,输入芯片搜索关键字
,从搜索结果中选择相应的芯片类型,作者使用的是STC89C52芯片
,读者需要选择自身开发板的芯片类型,最后点击ok按钮
在弹出的对话框中点击否即可完成项目的创建。
打开项目所在的目录,新创建的目录结构如下
使用左侧Keil Assistant插件
打开项目
进入项目目录后选择keil5的项目文件,最后点击打开
最后点击确定进入项目工作区目录
最后打开效果如下
user
,app
,public
,效果如下public.c
和public.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.c
和timer0.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
,往下拉到最后,可以看到,项目已经默认有一个组了。我们需要按照自己的项目模块创建组。
user
,app
,public
,修改后如下找到头文件的配置位置,大约在314行,如下所示
找到位置后,填写我们的头文件路径,使用;
进行分隔。修改后如下
Hex
文件使用CTRL+F
快捷键搜索hex
,可以快速找到相关配置
0代表不生成hex
文件,1代表生成,我们修改其为1即可。
点击Keil Assistant
插件中的构建
按钮即可构建项目,最后可以观察到控制台输出构建成功
至此,项目的基本框架已经构建成功,如果需要添加新的模块,在app
目录下创建一个新的目录,接着添加源文件和头文件,最后修改xml配置文件即可。
首先需要知道的是,只要按照上面的步骤配置好xml文件,项目能够正确运行即可。解决头文件找不到的问题可以让vscode正确跳转相关文件并消除看的心烦的红色波浪线。
这是因为项目的c/c++的头文件配置不是特别准确,打开.vscode
目录,然后打开c_cpp_properties.json
文件。该文件用于保存c/c++项目的相关配置。
修改该行为"F:\\keil\\C51\\INC\\**“即可,报错是因为没有在INC目录下找到,REGX52.h
的实际路径为"F:\keil\C51\INC\Atmel”,所以没有找到,我们在后面添加**
,可以匹配该目录下面的所有文件。
新建模块文件后,我们直接在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 版权协议,转载请附上原文出处链接和本声明。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。