热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

新建文件夹默认只读_Keil系列教程02_新建基础软件工程

说明:本文原创作者『strongerHuang』首发于微信公众号『嵌入式专栏』,同时也更新在我的个人网站:EmbeddedDevelop标
f8991cd505a8bd747fac0bb4c96e042b.png

说明:

本文原创作者『strongerHuang

首发于微信公众号『嵌入式专栏』,同时也更新在我的个人网站:EmbeddedDevelop

标签:Keil、 MDK-ARM、 µVision

该教程基于MDK-ARM,大部分内容也适用于Keil其它3款(C51、 C251、 C166)产品。

一、写在前面

目前Keil的四款产品(软件):MDK-ARM、C51、C251、C166,在用法上极为相似,包括本文讲述的新建软件工程。

本文以目前(2018年10月)最新Keil MDK-ARM V5.26、STM32F103标准外设库为例,来给大家讲述新建软件工程的具体步骤。

本文讲述的新建软件工程,只是最基础的软件工程(一个工程,一个目标)。其中只修改了必要的配置,大部分配置默认。

如果你是Keil C51、或者其它MCU器件,本文也适用,只是针对MCU器件有略微差异。

二、准备工作

俗话说“磨刀不误砍柴工”,做好了准备工作,后面新建基础软件工程的工作就很容易实现了。

这里针对STM32会下载“标准外设库”这个准备工作,如果你是C51,或者不用库,这个准备工作就可略过。

2.1 下载安装Keil工具

本文必备工具,详情请参看该系列教程上一篇文章《Keil系列教程01_Keil介绍、下载、安装与注册》。

2.2 下载STM32标准外设库

这一节是准备源代码(库),如果你使用C51、寄存器开发,本节内容可以略过。下面提供官方下载链接,嫌麻烦的朋友可以在我百度网盘下载。

A.官网下载

http://www.st.com/content/st_com/en/products/embedded-software/mcus-embedded-software/stm32-embedded-software.html?querycriteria=productId=SC961

根据芯片型号下载对应的标准外设库(如芯片为STM32F103ZE,则下载对应的STM32F10x_StdPeriph_Lib),如下图:

8b64641294ac6005b166e08adc38310e.png

B.百度网盘

http://pan.baidu.com/s/1qYbBKMK

提示:如果以上链接失效,可以关注微信公众号,获取更新链接。

2.3 整理工程文件夹

这一小节的内容可根据自己习惯来整理,我整理的文件及文件夹结构是按照常规的整理方式。你如果觉得合理,可以引用;

首先建立一个存放工程文件的总文件夹:STM32F103ZE(Keil)_Demo

A.提取ST标准外设库文件 ST标准外设库里面源代码文件我们只需要使用部分文件。因此,提取需要使用的文件及文件夹到我们的工程中。

解压“STM32F10x_StdPeriph_Lib”,可以看到在主目录下面有四个文件夹:

_htmresc:图片文件夹(不提取)

Libraries:库文件夹(提取大部分)

Project: 示例工程(提取少部分)

Utilities: 公共代码、评估板代码(不提取)

我们需要使用Libraries和Project目录下的文件,但也有部分不用。因此,我们需要删除不用的文件。(具体保留了哪些,可以下载我提供例程查看)

B.新建文件和文件夹

除了上面提取的文件之外,我们需要建立存放自己代码的文件和文件夹。我这里主要新建三个文件夹:

App: 应用部分代码

Bsp: 底层部分代码

Doc: 说明文档

在新建的文件夹下面还需要新建自己的源文件,源文件里面添加源代码。我们提供的Demo工程,实现的一个LED闪烁的功能。(这里不描述)。

上面两个步骤完成之后,我们就可以看到在“STM32F103ZE(Keil)_Demo”下面整理的文件夹:

dd01e42cab697eeca830ae3cc79ebb05.png

至此,准备工作算完成了,上面提取的文件、新建的文件里面具体的内容请下载Demo工程查看。

三、新建软件工程

新建一个简单、基础的软件工程大概需要有三个步骤:建立工程、添加文件和配置工程

上面的准备工作做好之后,就可新建自己的软件工程了,下面将一步一步讲述从零开始新建一个软件工程的详细过程。

3.1 建立工程

建立工程的步骤是基础,也比较简单,下面一步一步教大家新建一个空的工程。

A.打开软件,新建立工程(Project -> New uVision Project)

96d8057458c7dd06099368b6f2ccdbd2.png

B.选择保存路径,保存名称

6b0af26f25ffd29f250f24cd5cd04805.png

C.选择芯片型号

724871a209d3243e541fdaed215d516e.png
7cfb556d43f3add86b9c6a3b1737167e.png

D.基础工程

cf23b4088f8805a5cca947aaed208d6c.png

一个基础的工程就完成了,但还不够,还需要下面的步骤。

3.2 添加文件

准确的来说,应该是添加组(文件夹)和添加文件。直接的说,就是将你自己的源代码(前面提取的库、新建的文件等)添加到工程中。

这里的工程项目管理可根据自己的想法来定义(类似于自己分类、命名文件夹和文件),我这里按照常规的方式进行管理项目。

点击“项目管理”快捷按钮,或者Project -> Manage -> Project Items 进入“项目管理”界面。

c1752f06a211a85a53be13e701b84e5e.png
e770b97a5e20b2a3c0a202192d889fc3.png

· ·

一步一步添加,直到最后完成

· ·

faf9ca2b6a66fbf2d88ab3780b8b632b.png

3.3 配置工程

配置工程对于初学者来说,大部分内容只需要默认即可,这里只讲述几个常见的配置,能满足基本的功能。

A.点击“工程目标选项”进入配置(或Project -> Options for Target)

e7715a46c608ff1f1b55d754c98c26fe.png

B.输出Hex文件 很多朋友初学的朋友都会问怎么输出Hex,只需要勾选上【Project -> Options for Target -> Output】“Create HEX File”即可。

6bb344486c9ee6bea8a2f4a7df44976c.png

C.C/C++配置 这个选项的配置参数比较多,对于大型项目来说比较重要,但对于初学者来说,只需要简单配置两项就行。

第一处配置---预定义: 【这里以STM32F103大容量芯片为例】

a8ea7d5bc047fe65c0fc821b81a8e6e6.png

预定义STM32F10X_HD,等同于#define STM32F10X_HD.

有些工程还预定义USE_STDPERIPH_DRIVER。由于都是使用“标准外设库”,我个人习惯把USE_STDPERIPH_DRIVER,定义在stm32f10x.h文件里面,所以在这里就看不到我定义的这一项了。

第二处配置---包含路径: 由于我们前面工程中有很多文件夹,因此需要添加对应的路径,这样编译器才能找得到。

c8aac690fd2665de147e20eb832ea180.png
822f760fe000e2d1c9f58e64b12b6f85.png

· ·

一步一步添加,直到最后完成

· ·

031d01feced8a32d0e20b2d769d10491.png

D.选择下载调试工具 这个选项根据自己的下载调试器来选择(比如:ST-Link)

bd6ca22d8bce7bc3f7c7d90ed30c98ce.png

E.下载复位并运行设置 有些初学的朋友说“为什么我下载程序之后,需要按一下复位键才能运行?”,只需要在工程中勾选上“Reset and Run”就可实现,下载完程序马上运行了。

79b2ad2474719b916836ae1d69cae894.png
09ba344d5f1f1050352ac10fd01f7bfc.png

至此,一个新建立的工程就算完成了(当然,我新建的文件是添加了正确的源代码),只需要编译,接上下载器就可以下载运行了。

四、下载

为方便广大STM32学习者,我将常见的STM32“Demo软件工程”已经建好,里面还包含EWARM建立的工程供大家下载。

STM32F0工程模板: http://pan.baidu.com/s/1pKSkSxt

STM32F1工程模板: http://pan.baidu.com/s/1c1AWupM

STM32F2工程模板: http://pan.baidu.com/s/1o8yGWg6

STM32F3工程模板: http://pan.baidu.com/s/1boVXh2f

STM32F4工程模板: http://pan.baidu.com/s/1qYzYMuS

STM32L1工程模板: https://pan.baidu.com/s/1rNPC3JQD7iLchVUEJlTjCQ

提示:如果以上链接失效,可以关注微信公众号,获取更新链接。

五、说明

1.该文档仅供个人学习使用,版权所有,禁止商用。

2.本文由我一个人编辑并整理,难免存在一些错误。

3.为了方便大家平时公交、地铁、外出办事也能用手机随时随地查看该教程,该教程同步更新于微信公众号『嵌入式专栏』,关注微信公众号回复【Keil系列教程】即可查看全系列教程。

六、最后

我的博客:http://www.strongerhuang.com

我的GitHub:https://github.com/EmbeddedDevelop

我的微信公众号(ID:strongerHuang)还在分享STM8、STM32、Keil、IAR、FreeRTOS、UCOS、RT-Thread、CANOpen、Modbus...等更多精彩内容,如果想查看更多内容,可以关注我的微信公众号『strongerHuang』。



推荐阅读
  • 本文分析了Wince程序内存和存储内存的分布及作用。Wince内存包括系统内存、对象存储和程序内存,其中系统内存占用了一部分SDRAM,而剩下的30M为程序内存和存储内存。对象存储是嵌入式wince操作系统中的一个新概念,常用于消费电子设备中。此外,文章还介绍了主电源和后备电池在操作系统中的作用。 ... [详细]
  • 树莓派语音控制的配置方法和步骤
    本文介绍了在树莓派上实现语音控制的配置方法和步骤。首先感谢博主Eoman的帮助,文章参考了他的内容。树莓派的配置需要通过sudo raspi-config进行,然后使用Eoman的控制方法,即安装wiringPi库并编写控制引脚的脚本。具体的安装步骤和脚本编写方法在文章中详细介绍。 ... [详细]
  • Skywalking系列博客1安装单机版 Skywalking的快速安装方法
    本文介绍了如何快速安装单机版的Skywalking,包括下载、环境需求和端口检查等步骤。同时提供了百度盘下载地址和查询端口是否被占用的命令。 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 目录实现效果:实现环境实现方法一:基本思路主要代码JavaScript代码总结方法二主要代码总结方法三基本思路主要代码JavaScriptHTML总结实 ... [详细]
  • 本文讨论了在Windows 8上安装gvim中插件时出现的错误加载问题。作者将EasyMotion插件放在了正确的位置,但加载时却出现了错误。作者提供了下载链接和之前放置插件的位置,并列出了出现的错误信息。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • imx6ull开发板驱动MT7601U无线网卡的方法和步骤详解
    本文详细介绍了在imx6ull开发板上驱动MT7601U无线网卡的方法和步骤。首先介绍了开发环境和硬件平台,然后说明了MT7601U驱动已经集成在linux内核的linux-4.x.x/drivers/net/wireless/mediatek/mt7601u文件中。接着介绍了移植mt7601u驱动的过程,包括编译内核和配置设备驱动。最后,列举了关键词和相关信息供读者参考。 ... [详细]
  • SpringMVC接收请求参数的方式总结
    本文总结了在SpringMVC开发中处理控制器参数的各种方式,包括处理使用@RequestParam注解的参数、MultipartFile类型参数和Simple类型参数的RequestParamMethodArgumentResolver,处理@RequestBody注解的参数的RequestResponseBodyMethodProcessor,以及PathVariableMapMethodArgumentResol等子类。 ... [详细]
  • 本文由编程笔记#小编整理,主要介绍了关于数论相关的知识,包括数论的算法和百度百科的链接。文章还介绍了欧几里得算法、辗转相除法、gcd、lcm和扩展欧几里得算法的使用方法。此外,文章还提到了数论在求解不定方程、模线性方程和乘法逆元方面的应用。摘要长度:184字。 ... [详细]
  • Netty源代码分析服务器端启动ServerBootstrap初始化
    本文主要分析了Netty源代码中服务器端启动的过程,包括ServerBootstrap的初始化和相关参数的设置。通过分析NioEventLoopGroup、NioServerSocketChannel、ChannelOption.SO_BACKLOG等关键组件和选项的作用,深入理解Netty服务器端的启动过程。同时,还介绍了LoggingHandler的作用和使用方法,帮助读者更好地理解Netty源代码。 ... [详细]
  • 基于移动平台的会展导游系统APP设计与实现的技术介绍与需求分析
    本文介绍了基于移动平台的会展导游系统APP的设计与实现过程。首先,对会展经济和移动互联网的概念进行了简要介绍,并阐述了将会展引入移动互联网的意义。接着,对基础技术进行了介绍,包括百度云开发环境、安卓系统和近场通讯技术。然后,进行了用户需求分析和系统需求分析,并提出了系统界面运行流畅和第三方授权等需求。最后,对系统的概要设计进行了详细阐述,包括系统前端设计和交互与原型设计。本文对基于移动平台的会展导游系统APP的设计与实现提供了技术支持和需求分析。 ... [详细]
author-avatar
一个人跳舞飘
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有