找回密码
 立即注册
查看: 4704|回复: 62

【Keil5-萌新指南】创建一个拥有个人风格的Keil5工程模板及一些Keil5的基本设置

 火.. [复制链接]
  • 打卡等级:以坛为家I
  • 打卡总天数:347
  • 最近打卡:2025-05-01 08:57:33
已绑定手机

30

主题

111

回帖

1659

积分

荣誉版主

Rbowlystar

积分
1659
发表于 2024-12-7 21:56:42 | 显示全部楼层 |阅读模式

这篇文章将会教你如何创建一个拥有个人风格的Keil5工程模板,同时也介绍一些Keil5的基本设置

第一步 当然是创建一个工程文件夹啦~

image-20241207132953272

新建完文件夹后,命名一下即可。

第二步 细分编译器模式(可以略过)

对于AI8051U来说,可以支持8位模式(C51)和32位模式(C251),既然是为了创建基础工程模板,我们可以再创建一个细分文件夹,如下可以区分不同的模式:

image-20241207133612833

第三步 工程文件分类

想要获得一个简洁、规整的工程目录,这一步十分重要!!!
我个人习惯创建"Drivers"(驱动)、"Output"(输出)、"Project"(工程)、"User"(用户)这4类目,当然还会包含一个"keilclean.bat"和"readme.txt"文件。
  • Drivers:用于存放各种驱动文件,如iic.c、spi.c、i8080.c
  • Output:用于存放keil5编译时的链接文件和输出文件
  • Project:用于区分和存放各种编译器的工程文件
  • User:用于存放用户层的文件
  • keilclean.bat:清除keil5的链接文件
  • readme.txt:工程说明文件

image-20241207135528362

第四步 进一步细分文件类目

在第三步进行了一级目录的细分,为了进一步划分文件的用图和类别,再进行二级细分。

1、Drivers

该文件夹主要是用于存放各种驱动文件的,我对各种驱动文件再次做了划分:"BSP"(基础驱动)、"COMM"(官方提供的一些支持文件)、"Hardware"(外设驱动)、"Library"(官方提供的库函数)、"Middlewares"(中间层驱动文件)、"SYS"(系统级底层文件)。

image-20241207140453364

  • BSP:存放芯片所支持的各种外设驱动文件,如iic、spi、i8080、pwm、uart等等

image-20241207140820626

image-20241207140859691

  • COMM:存放官方提供一些驱动支持包,如usb.h、usb_cdc_32.lib

image-20241207141020189

  • Hardware:存放各种硬件外设的驱动文件

image-20241207141105206

image-20241207141117138

  • Library:存放库函数支持包
  • Middlewares:存放各种中间层驱动文件,如RTOS、Modbus等等
  • SYS:存放系统级调用文件,如config、delay等等

image-20241207141404810

2、Output

该文件夹主要用于存放编译时的输出文件和链接文件,暂时只接触了Keil5,暂不做细分了

3、Projects

该文件夹主要用于区别各种不同的编译器,如Keil5、SDCC、IAR等等,这里创建了一个"Keil5_C251"的文件夹,代表使用的是Keil5编译器。

image-20241207142122012

4、User

主要用于存放用户层的文件,如主函数、屏幕界面等等

第五步 新建Keil5工程

1、打开Keil5,可以看见是一个空白的界面(也可能是你上一次打开的工程,这个不用在意)
	2、选择Project(工程)目录
	3、新建一个工程

image-20241207134120179

4、找到刚刚创建的工程文件夹,创建一个工程名,保存即可

image-20241207142715156

5、更换芯片支持包为STC MCU,找到对应的芯片型号,这里是AI8051U-32bit

image-20241207142845444

image-20241207142919165

6、成功创建工程

image-20241207144611493

注:其中工程名称是不能修改的了。
		目标名称文件夹名称可以修改,也可以创建多个
		自定义文件夹名称可以修改,也可以创建多个

第六步 优化细分工程内文件目录

可以参考第三步、第四步进行分类。这里点开一个类似箱子堆的图标。

image-20241207143859266

1、刚打开是这样的,什么都没有,双击名称可以修改名称。

image-20241207144707789

image-20241207145126642

注:第一个类目,貌似可以在同一个工程内,创建多个项目,通过点击"Set as Current Target"进行切换。
2、第一个类目可以命名成一个项目名称,主要在第二类目中进行分类,最后点击OK即可,大概如下:

image-20241207145842892

3、导入文件(创建文件在后面)
此时文件夹创建完成了,但是没有任何C文件和H文件

image-20241207150022438

可以双击对应类目的文件夹进行导入文件

image-20241207150127901

选择当前工程文件夹下,对应类目的文件夹,一定要确定是当前工程文件路径。(以后复制工程模板时,有可能是在模板工程路径下,然后就会发现莫名其妙的少了一些文件)

image-20241207150239706

选择对应的文件,双击导入即可。

image-20241207150650710

此时就可以看见目录中出现了main.c这个文件

image-20241207151501808

4、创建文件
如果没有可以导入的文件怎么办?想创建一个文件重新写
右键一个文件夹,选择"Add New...."

image-20241207151802125

选择需要创建的文件类型,命名后"Add"即可

image-20241207152436424

可以看见出现我们刚刚创建的文件了,接下来就可以愉快的编程啦

image-20241207152110615

###这里我直接导入已经写好的代码文件,最终效果如下:

image-20241207153054566

第七步 工程设置(可参考AI8051U手册第6章)

这一步打开"魔术棒",对工程进行一些设置

image-20241207153256712

1、Target

根据手册推荐,可以设置成这样

image-20241207153424138

注:80251的指令模式有“Binary”和“Source”两种模式,Ai8051U系列目前只支持“Source”模式由于Ai8051U系列单片机在中断中的压栈和出栈都是4字节模式,建议“4Byte InterruptFrame Size”选项也打上钩
注:Memory Model是指存储器模式,80251有5种模式:

image-20241207154158848

注:Code Rom Size是指代码大小模式,80251有5种模式:

image-20241207154518926

2、Output

设置如下:

image-20241207155118671

修改输出文件的默认位置

image-20241207155246095

选择一开始创建的"Output"文件夹,确认即可

image-20241207155414455

3、Listing

这里只需要同上修改输出路径即可,其他选项保持默认。

image-20241207155751758

完成此步后,可以删除"xxx\Projects\Keil5_C251"路径下的"Listings"和"Objects"文件夹。

image-20241207162011458

4、User

无需修改

5、C251(优化等级、警告等级、绝对路径)

这一步十分重要!!

image-20241207160226656

代码优化等级,单片机内存足够时,选择等级0,即不优化,可以保证代码完整性,少出问题;如果代码确实写的很多很大,可以选择高等级,让编译器自动优化代码。
警告等级,默认选择等级2。选择等级0,将不会报警告,不建议。一般情况下,还是需要看警告进行代码优化的。
头文件路径,这个十分重要,作用是告诉编译器头文件在哪里,

image-20241207160901559

image-20241207161011523

依次添加第三步、第四步创建的驱动文件夹路径,这里的路径对编译器来说,都是绝对路径。

image-20241207161356404

注:绝对路径是 【目标文件所在位置】 相对 【工程文件所在位置】的路径,在绝对路径下的文件(如头文件),可以直接用
#include "xxx.h"
例如,"config.h" 文件在SYS文件夹下,而且绝对路径中包含了SYS文件夹的路径,就可以直接引用
#include "config.h"
但是,在Hardware文件夹下,有一个名为LED的文件夹,内有一个led.h文件

image-20241207162916677

此时,由于没有包含LED这个文件夹的绝对路径,如果直接引用"led.h"文件,将会报错,提示无法打开"led.h",此时只能重新打开魔术棒->C251->添加路径,那如果每写一个新的驱动文件,都要这样添加,会不会太麻烦了,全部放在同一个文件夹下,又太凌乱了,那怎么办呢?
相对路径:
	我们知道"led.h"这个文件的路径在LED文件夹里,而LED文件夹又在Hardware文件夹里,既然编译器知道Hardware在哪里,那引用的时候告诉编译器就好了,那么就可以这样:
#include "./Hardware/LED/led.h"
// 或者
#include "./LED/led.h"
其中"./"(或".

\")表示当前路径,而"../"(或"..\")表示上一级路径,那么

// 工程文件的路径是 C251_32bit\Projects\Keil5_C251
// led.h文件的路径是 C251_32bit\Drivers\Hardware\LED
#include "./LED/led.h"	// 对应工程文件文件,展开后即如下
// #include "../(上一级路径:Projects)../(上一级路径:C251_32bit)/Drivers/Hardware/LED/led.h"

image-20241207164923887

了解完之后,相对于本次添加的绝对路径,今后创建新的文件夹/文件,即可使用这种方式进行引用:
#include "./XXX/xxx.h"
// 例如,要引用如下iic.h文件
// 由于已经添加过BSP文件夹的绝对路径了,因此这样引用
#include "./IIC/iic.h"

image-20241207165324754

6、A251、L251 Locate

这里保持默认,无需修改。

7、L251 Miso(忽略某项警告)

这里设置忽略57号警告,
*** WARNING L57: UNCALLED FUNCTION, IGNORED FOR OVERLAY PROCESS
	这个警告是提示你,工程内有哪些函数从未被使用过
	(告诉你哪些函数 占着茅坑不拉屎)

image-20241207165750453

8、Debug(需要仿真时才设置)

使用仿真时,将会占用P30、P31口,这两个引脚的功能(一般是串口1)不能使用,否则仿真调试时会报错,如果需要使用串口1,可以将功能复用到其他引脚上。

image-20241207170520592

image-20241207170706561

9、Utilities(需要仿真时才设置)

image-20241207171007615

image-20241207171210845

至此,一个工程模板就创建好啦。

##番外 Keil5的一些设置

keil5 的设置在小扳手里面

image-20241207171648038

一、Eidtor (编辑器)

image-20241207171715664

我的个人设置是这样的。
其中比较有用的是:
	1、Encoding(编码格式):一般是GB2312或者UTF-8
2、显示空白符(空格是点,缩进符是箭头)

image-20241207174401853

3、Tab缩进设置(ASM是汇编文件,Other是其他文件)

image-20241207174559301

二、Colors & Fonts(颜色和字体)

这里可以设置背景颜色,字体颜色,字体大小等等

image-20241207175932252

一般就是设置C/C++编辑器文件就好了,可以把 Number 设置为红色(默认绿色)

image-20241207180419576

把字符串设置成其他颜色,我设置的是紫色(默认黑色)

image-20241207180510456

注:也推荐使用UTF-8的编码格式+Consolas字体

image-20241207180944724

这种字体可以一眼分辨数字0 和 字母O

image-20241207181112850

由于我已经用GB2312编码格式写好了,基础文件,现在切换中文注释会乱码,大家可以根据自身情况选择。

三、User Keywords(用户关键词)

这里可以新建一些 关键词

image-20241207174756986

当输入关键词时,会高亮显示,类似这样:

image-20241207174904439

四、Text Completion

这个我称之为"一键输入"或"常用语",在这里新建一个"常用语"名称,写入内容

image-20241207181525439

image-20241207181816351

效果如下:

recording

双击一下,就可以直接写入内容,常见的用法是创建一个函数注释头的"常用语"

image-20241207182156103

##代码介绍

1、config

config.h 文件内可以进行一些常用配置的切换
提供了一个float与u8类型相互转换的函数,支持大小端模式选择(相当于密码)
	实用案例:NRF24L01无线通讯时,float数据打包发送,接收端拆包显示
一个swap函数,用于交换两个变量的数值

image-20241207183020056

2、Type_def

该文件提供了一下常用的宏定义,以及一些实用的宏函数(个人提供的比较有限,十分欢迎各位坛友分享扩列)

image-20241207183438427

3、delay

包含一个毫秒级延迟函数和一个微秒级延时函数,以及一些由ISP生成的微秒级延迟函数。

image-20241207183742148

upload 附件:创建一个个人风格的Keil5工程 - 副本.md

upload 附件:AI8051U.zip

3 喜欢他/她就送朵鲜花吧,赠人玫瑰,手有余香!

本帖被以下淘专辑推荐:

回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:123
  • 最近打卡:2025-04-19 16:12:35
已绑定手机

60

主题

777

回帖

4001

积分

论坛元老

自定义头衔

积分
4001
发表于 2024-12-7 22:16:47 | 显示全部楼层
我选择直接下载附件,直接享用楼主创建好的Project

点评

可以的,工程配置会附带,但是Keil5软件的配置,需要自己设置一下  发表于 2024-12-7 22:30
联系我请点击左下角的【回复】按钮,否则我收不到消息提
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:422
  • 最近打卡:2025-05-01 09:54:52
已绑定手机

19

主题

3190

回帖

4866

积分

论坛元老

积分
4866
发表于 2024-12-7 22:43:26 | 显示全部楼层
最完整的keil使用教程啊
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2024-12-09 15:00:48
已绑定手机

0

主题

7

回帖

24

积分

新手上路

积分
24
发表于 2024-12-7 23:39:41 | 显示全部楼层

jingya

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:49
  • 最近打卡:2025-04-07 11:25:03
已绑定手机

1

主题

41

回帖

313

积分

中级会员

积分
313
发表于 2024-12-8 11:58:46 来自手机 | 显示全部楼层
真是全面啊
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:513
  • 最近打卡:2025-05-01 04:31:49

24

主题

515

回帖

986

积分

荣誉版主

积分
986
发表于 2024-12-18 08:46:45 | 显示全部楼层
在虚拟硬盘中编译代码,更爽。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:198
  • 最近打卡:2025-05-01 00:16:05
已绑定手机

24

主题

345

回帖

1629

积分

金牌会员

积分
1629
发表于 2024-12-19 13:57:52 | 显示全部楼层

每次都按照楼主教程来创建,多整几次就记住了。

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:518
  • 最近打卡:2025-05-01 05:52:49
已绑定手机

46

主题

1694

回帖

2540

积分

金牌会员

积分
2540
发表于 2024-12-19 14:10:27 | 显示全部楼层

又学到几手,感谢!

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:347
  • 最近打卡:2025-05-01 10:36:23

7

主题

281

回帖

1051

积分

金牌会员

积分
1051
发表于 2024-12-20 10:56:25 | 显示全部楼层
学习了
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:6
  • 最近打卡:2025-02-24 10:35:47
已绑定手机

0

主题

6

回帖

54

积分

注册会员

积分
54
发表于 2024-12-28 15:12:33 | 显示全部楼层

学习了,谢谢!

回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-1 19:53 , Processed in 0.263872 second(s), 139 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表