本工程以keil4下新建STC89C51工程为例,其他系列处理器工程搭建类似,参考本例即可。

供参考—已搭建完成的 STC51单片机工程模板3.0 下载链接

前言:

看到文章标题的小伙伴可能会很疑惑,51单片机新建工程顺手拈来的事,何必去麻烦的要去建一个工程模板,岂不是多此一举。我想说:任何能够提高开发效率的事情都值得去做。当笔者大一时进学校实验室之前,自学51单片机,那时我连程序模块化都不会,几个外设模块的程序统统写在main.c里面,写到最后,代码太多,程序出了问题,都不知道从哪查起,那时让我深知程序模块化的重要性。后来进了实验室主要用的是嵌入式,完成一个项目经常是多个队友合作,更是对程序模块化与模块化的工程框架有极高的要求。因此,搭建一个这样的51工程模板很有必要,帮助初学者形成良好的代码风格,也着实能够方便于团队合作,提高开发效率。


       搭建的STC89C51模板主要是仿照STM32的工程,搭建一个51的裸机模板,此模板虽然没有用到库,但是采用STM32裸机模板的工程格式,在很大程度上提高工程的整洁性和易用性。提高工程及代码的可移植性。下面详细介绍一下此51工程模板的搭建过程:

开始新建工程

点击桌面 UVision4 图标,启动软件。如果是第一次使用的话会打开一个自带的工程文件,我们可以通过工具栏 Project->Close Project 选项把它关掉。

在工具栏 Project->New μVision Project…新建我们的工程文件,我们将新建的工程文件保存在桌面的 STC89C51工程模板文件夹下(先在电脑桌面上新建一个STC89C51工程模板-文件夹,在 STC89C51工程模板 里面新建一个 USER 文件夹),文件名取为 STC89C51-DEMO(英文 DEMO 的意思是例子),名字可以随便取,点击保存。

接下来的窗口就是让我们选择公司跟芯片的型号,我们用的芯片是 ST 公司的STC89C51(keil编辑器中找不到的,最好用AT89S52——性能兼容),按如下选择即可:

接下来的窗口问我们是否需要拷贝 AT89S52 的启动代码到工程文件中,

这份启动代码在 C51 系列中都是适用的,一般情况下我们都点击是,而且我们这里没有用到 ST 的库,(库文件里面也自带了这一份启动代码),虽然如果不添加STARTUP.A51 这个文件,编译器就会自动加入一段初始化内存的以及堆栈等的代码,但这时的内存初始化部分你就无法去控制了,当然这在大部分情况下没有什么关系。但是如果

  所以,我们选择 ,然后STARTUP.A51会被默认跟工程文件一起建立在USER文件夹下,我们暂时先把它在那个文件夹下,稍后把它移动到STARTUP文件夹下。

特别注意:在此之前不要编译工程,否则会生成很多其它文件不便于移植。

接下来我们在STC89C51工程模板文件夹下另外建立四个文件夹,分别为 BSP、STARTUP

Output、 Listing,效果如图:

文件夹说明:

     BSP       文件夹: 存放外设硬件驱动程序

   USER    文件夹:用来存放工程文件和用户代码(主要是main.c)

   Output  文件夹:用来保存软件编译后输出的文件(主要是HEX文件)

   Listing   文件夹:用来存放一些编译过程中产生的文件,具体可不用了解

   STARTUP 文件夹:存放启动文件STARTUP.A51. 作用: 清理RAM.设置堆栈等.即执行完start.a51后跳转到.c文件的main函数

接下来回到我们刚刚新建的 Keil51工程中,将 Target 改为 STC89C51-DEMO(不改也行),

在 STC89C51-DEMO 上右键选中 Add Group…选项,新建四个组,分别命名如下:

接下来我们往我们这些新建的组中添加文件, 双击哪个组就可以往哪个组里面添加文件:

最终效果如下图:

至此, 我们的工程已经基本建好,下面来配置一下 MDK 的配置选项,点击
工具栏中的魔术棒按钮 ,在弹出来的窗口中选中Output

选中 选项卡,在 在这里添加文件编译的搜索路径,这样就可以屏蔽掉默认的搜索路径了。

编译路径修改成功之后如下所示:

编译一下,没有错误

至此,我们的51工程模板就建成了。建好了51工程模板,以后就可以很方便的拿来使用了。

当我们写新的项目工程的时候,只需要拷贝此模板,改文件夹名为我们的新项目名称即可。

这样每次成功编译工程输出的HEX文件都是“STC51-DEMO.hex”想要进行匹配新项目名称进行区分,只需

点击工具栏中的魔术棒按钮 ,在弹出来的窗口中选中Output,改为对应的名称即可。

更新:

1.此模板为STC51单片机工程模板,模仿stm32裸机工程结构搭建,各类文件放在指定的文件夹,分类明确,易于使用与管理。

2.此模板头文件包含方式可能会存在头文件互相包含的问题(在C++类的使用中会造成编译error),故此,为养成良好的编程风格,并参考了Linux内核源码的头文件包含方式,及网上的良好编程风格建议将改为,头文件只包含在.c文件中,.h文件实在需要包含头文件,一般只包含不修改或不经常修改的系统头文件。

3.还有一种头文件包含方式是:用includes.h包含所有的头文件,每一个.c文件中只包含includes.h,.h文件中不包含头文件或只包含不修改或不经常修改的系统头文件。这种方式广泛应用于实验室stm32工程中,此方式可以避免产生头文件互相包含问题但仍存在不容易看清文件调用了哪些模块问题。

好处是:1.比较容易看清文件调用了哪些模块,方便移植
             2.从而避免产生头文件互相包含问题

注:此模板已进行修改。

STC51单片机工程模板2.0
                                                                                                                               2016.12.20

1.一般在51工程中,写好但暂时没有用到的函数,编译会报警告,提示定义函数未引用,因此针对此问题,在STC51单片机工程模板3.0中更新如下:

优化掉未调用函数,这部分代码将不被编译和链接进最终程序,避免了提示警告以及浪费单片机有限的存储空间。

2.为使程序更加简明清晰,把“Tab键”改为跳4格。

3.添加批处理文件 keilkill.bat。
  删除keil软件编译产生的中间文件,避免在copy到其他地方时出现编译错误的问题。点击之后可以删除工程编译过程产生的一些中间文件,让工程变得干净。
  对keilkill.bat所在文件夹和所有子文件夹都有效。

STC51单片机工程模板3.0

2017.5.1

搭建STC89C51工程模板相关推荐

  1. Qt开发笔记(一):Qt+FFmpeg开发环境搭建以及工程模板

    原博主博客地址:https://blog.csdn.net/qq21497936 本文章博客地址:https://blog.csdn.net/qq21497936/article/details/90 ...

  2. HC32_HC32F072FAUA_从零开始搭建空工程模板

    1 下载官方提供的库文件 华大半导体有限公司 搜索对应芯片:HC32F072FAUA hc32f072_ddl_Rev1.1.10224.rar 2 构建空工程模板的目录 1.首先新建一个Templa ...

  3. GD32 MDK创建工程GD32F407工程模板

    GD32 MDK创建工程GD32F407工程模板 一.材料准备 1.到兆易官网下载固件库和支持包.GD32F4xx Firmware Library GD32F4xx ADD-ON 2.解压文件,安装 ...

  4. Gif开发笔记(一):gif介绍、编译和工程模板

    若该文为原创文章,转载请注明原文出处 本文章博客地址:https://blog.csdn.net/qq21497936/article/details/110530966 长期持续带来更多项目与技术分 ...

  5. STM32F103-LED模块

    32开发--灯控模块 硬件环境:单片机型号:STM32F103C8T6 软件环境:MDK514 前言 在做STM32单片机实验开发我们之前进行了开发环境的搭建,工程模板的建立以及单片机基础知识和GPI ...

  6. 国产单片机GD32系列开坑,带你零死角玩转GD32 第二章

    [开坑国产单片机GD32系列,带你零死角玩转GD32] 第二章 GD32开发环境的搭建,常用资料的获取,以及点亮LED! 目录 [开坑国产单片机GD32系列,带你零死角玩转GD32] 第二章 GD32 ...

  7. STM32学习——重点知识总结

    初始STM32 什么是STM32 1.ST- 意法半导体,是一个公司名,即SOC厂商 2.M- Microelectronics的缩写,表示微控制器,大家注意微控制 器和微处理器的区别 3.32- 3 ...

  8. HC32_HC32F072FAUA_I2C的使用

    1 首先你得有一个工程 参考前面介绍的: HC32_HC32F072FAUA_从零开始搭建空工程模板_江湖上都叫我秋博的博客-CSDN博客 HC32_keil工程的复制_重命名_以及函数.变量定义的正 ...

  9. STM32入门笔记(02):MDK Keil5 开发环境搭建及新建工程模板教程(SPL库函数版)

    目录 Keil5 开发环境搭建 芯片数据手册 Mec 多功能智能小车底盘开发与使用手册 Mec 主控原理图 Mec STM32F103VET6集成主控板资源分配 Mec OLED 显示内容 如何给 S ...

最新文章

  1. 迅雷(XUNLEI)的工作原理揭密(续)---为何遭封杀及如何应对?
  2. SAP CRM中间件队列CSAPR_HIERR3PRODHIER
  3. 反射与二次加工标准类型
  4. Linux内存寻址方式
  5. WinDbg配置与下载 (转载)
  6. 10天学安卓-第七天
  7. 从svn下载下来的项目遇到的问题
  8. 华为Mate 40系列或推迟到10月底发布:顶配破万无悬念
  9. LINUX下的GNU调试工具,GNU调试器 GDB 8.3 发布及安装更新,支持RISC-V与IPv6连接等
  10. python查看函数帮助文档的方法
  11. 将rgba图片信息转换为bmp图片文件
  12. 【算法篇】汉诺塔问题
  13. 使用LIME解释CNN
  14. Lowest, highest?
  15. 第十二节:通信之WLAN(Miracast)
  16. 【Codeforces Round #614(div2)】E-Xenon's Attack on the Gangs(树形dp)
  17. chrome 插件 click 无效
  18. 3D和IMAX 3D带你体验加勒比的惊涛怪浪
  19. 一方库、二方库、三方库 概念
  20. 无效的m3u8怎么办_求教: 用 ckplayer 网页播放 m3u8 的直播无法播放,是什么问题?...

热门文章

  1. js实现幻灯片轮播图
  2. 数据挖掘计算机语言,数据挖掘工程师
  3. CCF期刊阅读18.1--城市计算和智能
  4. Node:找不到模块Error: Cannot find module
  5. 用ORGE+OFUSION+CEGUI+NxOrge+OpenAL组件构造一个游戏引擎
  6. 3.暴力破解凯撒密码
  7. 在Ubuntu中配置中文输入法
  8. 做需求分析师的几点困惑
  9. bugku 杂项 图穷匕见 wp
  10. Editor.js 使用