Keil(MDK-ARM-STM32)系列教程(一)_新建软件工程详细过程
Ⅰ、写在前面
本文使用目前(2016年11月)最新版本Keil(MDK-ARM)V5.21a开发环境、以STM32的处理器为例给大家讲述新建一个软件工程的详细过程。
Keil(MDK-ARM)V4和V5新建软件工程基本一样,本文也适合与V4版本的新建软件工程。
本文使用的处理器是ST公司的STM32F1系列芯片,ST公司其它系列(如:F4等)、其它公司(如:TI)新建软件工程的过程也是一样。
Ⅱ、本文要点
从本文标题可以看得出,重点是新建软件工程的过程。但是作为ARM开发的软件工程,一般都会包含部分源代码(如:库),意思就是说需要准备一些工程所包含的源代码文件。
本文基于STM32F1系列芯片为例来讲述(其他系列芯片类似),将简单描述一下准备STM32F1标准外设库、Demo源代码(LED闪烁例程)。
准备工作之后新建软件工程才是本文是要点,新建软件工程的过程主要针对初学者,大部分工程的配置就选择默认,如要查看更多关于软件工程的详细配置可以进入博客或关注微信公众号查看。
Ⅲ、准备工作
俗话说“磨刀不误砍柴工”,准备工作虽然与题目关系不是很大,但也是本文的重点,做好了准备工作,后面新建软件工程的工作就很容易实现了。
1.安装Keil(MDK-ARM)软件工具
本文必备工具,这里不多说,详情请看我的另一篇文章【Keil(MDK-ARM)介绍、下载、安装与注册】:
博客:
2.STM32标准外设库下载
官网下载链接(需要ST账号登陆):
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),如下图:
3.整理工程文件夹
这一小节的内容可根据自己习惯来整理,我整理的文件及文件夹结构是按照常规的整理方式。你如果觉得合理,可以引用;如果觉得不习惯这个结构方式,可以自己整理。
首先建立一个存放工程文件的文件夹:STM32F103ZE(Keil)_Demo
A.提取ST标准外设库文件
ST官网下载的标准外设库里面有很多源代码文件,但我们只需要使用部分文件。因此,需要提取使用的文件及文件夹到我们的工程中。
解压“STM32F10x_StdPeriph_Lib”,可以看到在主目录下面有四个文件夹:
_htmresc:图片文件夹(不提取)
Libraries:库文件夹(提取大部分)
Project: 示例工程(提取少部分)
Utilities: 公共代码、评估板代码(不提取)
我们使用标准外设库主要提取的文件是Libraries下面的文件,但有些文件及文件夹也是多余的。因此,我将多余的文件及文件夹去掉,保留需要的文件和文件夹。
B.新建文件和文件夹
除了标准外设库文件之外,我们需要建立存放自己代码的文件和文件夹。我这里主要需要新建三个文件夹:
App: 应用部分代码
Bsp: 底层部分代码
Doc: 说明文档
在自己新建的文件夹下面还需要新建自己的文件,文件里面添加源代码,我们提供的Demo工程,实现的功能比较简单,就是一个LED闪烁。这里不描述,具体可以在最后下载查看。
上面两个步骤完成之后,我们就可以看到在“STM32F103ZE(Keil)_Demo”下面整理的文件夹:
至此,准备工作算完成了,上面提取的文件、新建的文件里面具体的内容请下载Demo工程查看。
Ⅳ、新建软件工程
新建一个简单、基础的软件工程大概需要有三个步骤:建立工程、添加文件和配置工程。
上面的准备工作做好之后,就可新建自己的软件工程了,下面将一步一步讲述从零开始新建一个软件工程的详细过程。
1.建立工程
建立工程的步骤是基础,也比较简单。
A.打开软件,新建立工程(Project -> New uVision Project)
B.选择路径,保存名称
C.选择芯片型号
D.基础工程
一个基础的工程就完成了,但需要使用还不够,还需要下面的步骤。
2.添加文件
准确的来说,应该是添加组(文件夹)和添加文件。直接的说,就是将你自己的源代码(前面提取的库、新建的文件等)添加到工程中。
这里的工程项目管理可根据自己的想法来定义(类似于自己分类、命名文件夹和文件),我这里按照常规的方式进行管理项目。
·
·
一步一步添加,直到最后完成
·
·
3.配置工程
配置工程对于初学者来说,大部分内容只需要默认即可,这里只讲述几个常见的配置,能满足基本的功能。更多配置可进入我微信公众号或博客查看。
A.点击“工程目标选项”进入配置(或Project -> Options for Target)
B.输出Hex文件
很多朋友初学的朋友都会问怎么输出Hex(可直接下载的文件),只需要勾选上【Project -> Options for Target -> Output】“Create HEX File”即可。
C.C/C++配置
这个选项的配置参数比较多,对于大型项目来说比较重要,但对于初学者来说,只需要简单配置两项就行。
第一处配置---预定义:
【这里只针对于STM32F103大容量芯片,其他芯片视情况而定】
预定义STM32F10X_HD,有些工程还预定义USE_STDPERIPH_DRIVER。由于都是使用“标准外设库”,我个人习惯把USE_STDPERIPH_DRIVER,定义在stm32f10x.h文件里面,所以在这里就看不到我定义的这一项了。
第二处配置---包含路径:
由于我们前面工程中有很多文件夹,因此需要添加对应的路径,这样编译器才能找得到。
·
·
一步一步添加,直到最后完成
·
·
D.选择下载调试工具
这个选项根据自己的下载调试器来选择(比如:ST-Link)
E.下载复位并运行设置
有些初学的朋友说“为什么我下载程序之后,需要按一下复位键才能运行?”,只需要在工程中勾选上“Reset and Run”就可实现,下载完程序马上运行了。
至此,一个新建立的工程就算完成了(当然,我新建的文件是添加了正确的源代码),只需要编译,接上下载器就可以下载运行了。
以上内容仅供参考,若有不对之处,敬请谅解。
Keil(MDK-ARM-STM32)系列教程(一)_新建软件工程详细过程相关推荐
- Keil(MDK-ARM-STM32)系列教程(二)工具栏详细说明
Ⅰ.写在前面 Toolbars工具栏其实就是在菜单下面一行一行的快捷图标按钮,这些快捷按钮之所以归为工具栏里面,在于它们使用的频率较高.比如编译按钮,这个按钮在我们编程的时候使用的频率是相当高,其他快 ...
- Keil(MDK-ARM-STM32)系列教程(四)工程目标选项配置(Ⅱ)
Ⅰ.写在前面 本文接着上一篇文章"工程目标选项配置(Ⅰ)"进行讲述工程目标选项中后五项的配置,也就是C/C++.Asm.Linker.Debug.Utilities这五项配置的具体 ...
- Keil(MDK-ARM-STM32)系列教程(八)在线调试(Ⅰ)
Ⅰ.写在前面 Keil在线调试的内容有很多,本文带来在线调试常用的内容:Debug Toolbar调试工具栏(复位.全速运行.停止运行.单步调试.逐行调试.跳出调试.运行到光标行.跳转到暂停行.调试窗 ...
- Keil(MDK-ARM-STM32)系列教程(七)菜单
Ⅰ.写在前面 本文带来关于Keil软件菜单的内容,系列教程中前面讲述的内容都可以通过菜单而找到,只是大部分内容都可以通过快捷按钮或快捷键找到,该文就讲述主菜单里每一个子菜单的内容. Keil有些菜单在 ...
- Keil(MDK-ARM)系列教程(七)_菜单
推荐 分享一个大神的人工智能教程.零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到人工智能的队伍中来!http://www.captainbed.net/strongerhuang 我的网站:h ...
- Keil(MDK-ARM)系列教程(八)_在线调试(Ⅰ)
推荐 分享一个大神的人工智能教程.零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到人工智能的队伍中来!http://www.captainbed.net/strongerhuang 我的网站:h ...
- ARM Keil MDK开发STM32工程模板
使用Keil MDK开发STM32的工程模板 源代码工程 https://github.com/chenhaifeng2016/Band
- keil如何添加STM32系列
keil如何添加STM32系列 共分两步 一.查看Keil版本号 二.在官网上下载对应版本号的STM32系列文件,打开下载的文件安装. 一. 1.找到电脑上的keil软件,双击打开 2.点击工具栏中的 ...
- Keil(MDK-ARM-STM32)系列教程(六)Configuration(Ⅱ)
Ⅰ.写在前面 本文接着上一篇文章"Configuration(Ⅰ)"进行讲述Configuration后面三项Shortcut Keys快捷键.Text Completion代码完 ...
最新文章
- 【干货】超全!华为交换机端口vlan详解~
- 人脸识别(二)——训练分类器的补充说明
- retrofit 会请求两次_Retrofit2+Rxjava-Rxjava2.x-篇二-依次执行多个请求-flatMap/map
- [css] 怎么让英文单词的首字母大写?
- 巴铁 无人驾驶_巴铁?Clip-air?请查收汽车的最新玩法
- .net mysql 多线程_.net线程详解(转)
- 线程同步,通信与虚方法
- 通过git命令将本地代码文件推送至github
- Ubuntu环境下下载Android-SDK-Linux之后使用adb连接设备报错
- 问题 2111: 连环阵
- 机器学习中的特征重要性 Feature Importance
- Word中在囗中打勾或打叉的方法介绍
- 防止padding撑开盒子的方法
- 一个完整推荐系统的设计实现
- pyqt-窗口最大化
- Linux应用程序开发之man手册汉化+开发的简易流程说明
- git 配置origin_在VS CODE中配置使用Git
- 侯,旬,月,季,年转换为时间
- stc15XX单片机的EPROM读写
- CRMEB :成功申报中国科协开源评选
热门文章
- bootstrap框架菜单栏颜色设置_Bootstrap Icons - bootstrap专用的漂亮图标库,可以免费商用...
- Java 并发编程之 Atomic 类
- uniapp 获取图片的高度_uniapp自定义切图
- Java 算法 传球游戏
- 鸿蒙手机播放音乐-第一集
- 解决yum锁定Another app is currently holding the yum lock; waiting for it to exit...
- 机器学习集成模型学习——Boosting集成学习(四)
- 解决 ifconfig: command not found
- java的平方分之x的平方加xy_Java面试宝典_基础编程练习题_完全平方数
- python与数学关系大吗_通过一个简单的数学游戏,清晰了解各大编程语言之间的一些区别...