历史上的今天
返回首页

历史上的今天

今天是:2024年09月17日(星期二)

2019年09月17日 | Keil(MDK-ARM)系列教程(一)_新建软件工程详细过程

2019-09-17 来源:eefocus

Ⅰ、写在前面

本文使用目前(2016年11月)最新版本Keil(MDK-ARM)V5.21a开发环境、以STM32的处理器为例给大家讲述新建一个软件工程的详细过程。


Keil(MDK-ARM)V4和V5新建软件工程基本一样,本文也适合与V4版本的新建软件工程。


本文使用的处理器是ST公司的STM32F1系列芯片,ST公司其它系列(如:F4等)、其它公司(如:TI)新建软件工程的过程也是一样。


为方便广大STM32学习者,我将在下面把STM32F0 - F4各个系列芯片新建好的Demo软件工程、相关的工具和文档提供给大家下载。


本文内容已经整理成PDF文件,提供给大家下载:


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


作者:strongerHuang


所有,未经允许,禁止用于其它商业用途!!!


Ⅱ、本文要点

从本文标题可以看得出,重点是新建软件工程的过程。但是作为ARM开发的软件工程,一般都会包含部分源代码(如:库),意思就是说需要准备一些工程所包含的源代码文件。


本文基于STM32F1系列芯片为例来讲述(其他系列芯片类似),将简单描述一下准备STM32F1标准外设库、Demo源代码(LED闪烁例程)。


准备工作之后新建软件工程才是本文是要点,新建软件工程的过程主要针对初学者,大部分工程的配置就选择默认,如要查看更多关于软件工程的详细配置可以进入博客或关注微信公众号查看。


Ⅲ、准备工作

俗话说“磨刀不误砍柴工”,准备工作虽然与题目关系不是很大,但也是本文的重点,做好了准备工作,后面新建软件工程的工作就很容易实现了。


1.安装Keil(MDK-ARM)软件工具

本文必备工具,这里不多说,详情请看我的另一篇文章【Keil(MDK-ARM)介绍、下载、安装与注册】:


博客:http://blog.csdn.net/ybhuangfugui/article/details/51501781


PDF:http://pan.baidu.com/s/1nuJ0RDR


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),如下图:

也可以到我百度网盘下载(和官网一样):


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


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”就可实现,下载完程序马上运行了。

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

推荐阅读

史海拾趣

Helicomm公司的发展小趣事

在电子行业中,Helicomm公司凭借其深厚的技术积累和不断创新的精神,逐渐崭露头角并发展成为业界的佼佼者。以下是关于Helicomm公司发展起来的五个相关故事:

1. ZigBee技术的引领者

自2002年成立以来,Helicomm公司便致力于ZigBee及IEEE 802.15.4标准的研究与产品开发,成为全球ZigBee技术的引领者之一。公司不仅成功完成了IEEE 802.15.4和ZCP的双重资格认证,还推出了多款经过FCC认证的ZigBee模块,广泛应用于市政、安全、监测、物流、定位等领域。Helicomm的ZigBee模块为客户搭建了一条从芯片到应用的快速通道,极大地简化了无线产品的开发流程。(信息来源:百度百科)

2. 技术并购与子公司成立

2005年,Helicomm公司完成了对尉普(WirelessPlug)科技股份有限公司的并购,并成立了赫立讯科技(北京)有限公司,作为其在中国的全资子公司。这一举措不仅增强了Helicomm在全球无线通讯市场的竞争力,还为其在中国市场的拓展奠定了坚实的基础。赫立讯科技继承了尉普在无线传输终端产品方面的技术积累,进一步推动了ZigBee等无线通讯技术在中国的应用与发展。(信息来源:安阳市菲云网络科技有限公司网站)

3. 参与国际标准制定

作为ZigBee联盟的创始会员之一,Helicomm公司积极参与了ZigBee标准的制定与推广工作。通过与国际同行的紧密合作与交流,Helicomm不断提升自身在无线通讯领域的技术实力和影响力。其产品在符合国际标准的同时,也融入了公司的独特创新,满足了不同行业客户的多样化需求。(信息来源:综合多个来源)

4. 工业无线监控系统的创新

近年来,Helicomm公司联合柏元网控、研华科技等合作伙伴,共同推出了针对油田、水利等行业的工业无线监控系统方案。该系统方案充分利用了Helicomm在ZigBee、GSM/GPRS/CDMA等无线通讯技术方面的优势,结合合作伙伴在软件监控、硬件采集控制等方面的专长,为相关行业提供了高效、可靠的无线监控解决方案。这一创新不仅提升了行业的智能化水平,也进一步巩固了Helicomm在无线通讯领域的领先地位。(信息来源:重庆市智畅行物联科技有限公司网站)

5. 国际市场的拓展

Helicomm公司的产品不仅在中国市场取得了显著成绩,还成功打入国际市场,赢得了广泛的认可。公司凭借其先进的技术、稳定的产品性能和优质的本地化服务,在国际市场中建立了一席之地。特别是在水利、交通、环保、气象等领域,Helicomm的无线通讯产品得到了广泛应用,为全球客户提供了可靠的无线通讯解决方案。(信息来源:综合多个来源)

以上五个故事展示了Helicomm公司在电子行业中的发展历程和成就,体现了其在无线通讯领域的深厚技术实力和不断创新的精神。

明微公司的发展小趣事

随着全球半导体行业向中国市场的转移,明微公司意识到拓展海外市场的重要性。为了加快海外市场拓展步伐,公司积极加强与国际知名企业的合作与交流,引进先进的技术和管理经验。同时,公司还积极参加国际展会和论坛等活动,提升品牌影响力。这些举措使明微公司在国际市场上逐渐树立起良好的口碑和形象。

Corsair Electrical Connectors Inc公司的发展小趣事

在国内市场取得一定成绩后,Corsair开始将目光投向了更广阔的国际市场。公司积极参加国际电子展会,与海外客户建立联系,拓展销售渠道。同时,Corsair还根据不同国家和地区的市场需求,调整产品策略,提供定制化的解决方案。这些努力使得Corsair的产品逐渐走进了国际市场,公司的影响力也不断扩大。

AURORA公司的发展小趣事

在自动驾驶技术快速发展的同时,AURORA公司也积极寻找商业化突破口。公司创始人认为,自动驾驶卡车商业化是一个具有巨大潜力的市场。因此,AURORA优先瞄准了自动驾驶卡车商业化领域,与FedEx、Paccar、Schneider、Werner和Xpress等多家平台公司建立了试点合作关系。通过在实际场景中测试和验证自动驾驶技术,AURORA不断积累经验和数据,为未来的商业化落地奠定了坚实基础。

这五个故事展示了AURORA公司在电子行业中的发展历程和取得的成就。从初创时期的挑战与机遇到技术实力的不断提升,再到与汽车制造商的深度合作、垂直产业链的整合与布局以及自动驾驶卡车商业化的探索,AURORA公司凭借其卓越的技术实力和前瞻性的战略眼光,在电子行业中逐渐崭露头角。未来,我们有理由相信AURORA将继续在自动驾驶领域取得更多突破和创新。

德索五金(dosinconn)公司的发展小趣事

发展历程:2007年,公司率先在业内引入了ERP系统,实现了企业高效智能的生产管理、财务管理、物流管理和决策管理。这一创新举措极大地提升了客户订单的响应速度,使德索五金电子步入了数字化信息时代。

成果与影响:ERP系统的引入使德索五金电子的管理水平迈上了新的台阶,为企业的快速发展提供了有力支持。

FOTEK公司的发展小趣事

进入21世纪,福禄克通过一系列精明的并购活动,实现了业务的快速扩张。2000年,公司成功收购了Wavetek Wandell Goltermann的精密测量部门,这次并购不仅增强了福禄克在电气校准市场的竞争力,还为其带来了丰富的技术专利和客户资源。此后,福禄克继续通过并购方式,进入新的技术领域和市场领域,不断拓宽其业务范围。

问答坊 | AI 解惑

Endpoint Block Plus for PCI Express® 用户指南

《Endpoint Block Plus for PCI Express® 用户指南》讲述 Endpoint Block Plus for PCI Express (PCIe®) 核的功能和操作,包括如何设计、定制和实现核。 现在这个技术已经开始广泛应用了,对高端用户蛮有用的…

查看全部问答>

问题 : Win CE 5.0 使用 IImage 接口实现 图片浏览 急 多谢

使用IImage将图片Draw()在一个Static 框上 无法刷新 即上一次画的内容在画另一幅图片时仍存在 不知怎样消除 若用FillRect 将static框画黑 明显看到闪烁 不知描述的是否清楚 多谢了各位 或其他实现图片浏览的方法 wince 5.0 再次感谢…

查看全部问答>

PB5.0生成的platform如何删除?

PB5.0生成的platform如何删除?如果直接删除目录,在启动页面上仍然保留其超级链接.…

查看全部问答>

请教高手一个文件传输问题,高手请指点啊!

在VC里借鉴了个网友做的服务器和客户端程序,想把客户端移植到EVC下面,出现了编译错误,请高手指点怎么改?? vc下的客户端程序部分代码是: [code] DWORD WINAPI CClientDlg::SocketSend(LPVOID lpParameter) {         ...…

查看全部问答>

想问一句咱们datasheet的PDF是都加了权限的吗?

想问一句咱们datasheet的PDF是都加了权限的吗? 建议把权限去掉这样好往文档里面复制 呵呵…

查看全部问答>

万利的STM32F107开发板什么时间在国内市场能买到呀

                                 大牛们,谁知道万利的STM32F107开发板什么时间在国内市场能买到呀,香水主出来说下行吗?…

查看全部问答>

,我有些不理解.

关于 你们的声明,我有些不理解.例如:我采用芯片经常看一些demo,而且线路也和demo一样.难道说,只允许我买片子,具体电路还要自己重新设计吗,不允许使用demo线路吗,这样的话,我买片子还干吗用,demo就是为了让使用者尽快熟悉该芯片的使用等,我不明白,如 ...…

查看全部问答>

我彻底晕了,搞了一天,还是没有解决!天啊,问题到底出在哪里?

程序编好了,各种功能都很正常,用的是135,可是今天领导说让在程序初始化的地方先让P5.3=1,P5.0=0,然后经过一段延时在另P5.3=0;P5.0=1;看似很简单,可是当我这样改了之后问题却出来了,程序运行到P5.3=0;P5.0=1;指令后就复位,一直重复不断,我不知道问题 ...…

查看全部问答>

点阵光标怎么实现?

我用三星的160s321a1型号的屏,想出光标,可是弄了好几天了,现在光标出来了,就是没有地址不知道该如何去显示?…

查看全部问答>

请问modelsim SE6.5打开为什么这么慢

装的是ISE10.1+ modelsim SE6.5  装上之后编译xilinx库文件之后  再在ISE下调用modelsim就特别慢  单独打开modelsim 6.5时也特别慢  机器配置绝对没问题,顶级的,也没开任何其他大程序。  怀疑是加载了什么不需要的东东 ...…

查看全部问答>