历史上的今天
返回首页

历史上的今天

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

正在发生

2019年09月24日 | 使用MDK创建stm32 库函数工程简单教程

2019-09-24 来源:eefocus

一. 需要准备的资料及环境:


1.STM32固件库,我们使用的固件库为STM32F10x_StdPeriph_Lib_V3.5.0,可在st官方下载


2.MDK开发环境(我们使用的版本为MDK4.7A)。


二. 新建工程

1.打开MDK,然后选择菜单 Project->Close Project,关掉已存在的工程!这样整个MDK就是一个空的了,接下来我们将建立工程。


2.在建立工程之前,建议用户在电脑的某个目录下面建立一个文件夹,后面所建立的工程都可以放在这个文件夹下面,这里我们建立一个文件夹为: STM32_IAP.在该文件夹下再创建CORE、OBJ、STM32F10x_FWLib、USER等文件夹,USER用来保存工程,CORE用来存放核心文件和启动,OBJ是用来存放编译过程文件以及 hex 文件,STM32F10x_FWLib 文件夹用来存放ST 官方提供的库函数源码文 官方提供的库函数源码文 官方提供的库函数源码文 官方提供的库函数源码件。


3.点击Keil的菜单:Project –>New Uvision Project ,然后将目录定位到刚才建立的文件夹STM32_IAP之下,把工程文件保存到USER文件夹下面。工程命名为IAP-Bootloader ,点击保存

4.接下来会出现一个选择Device的界面,我们选择STM32F103C8(如果是其他芯片,请选择对应的型号)。


5.弹出对话框“ Copy STM32 Startup Code to project  ….”,询问是否添加启动代码到工程中,选择“否”,”,因为使用的 ST 固件库文件已经包含了启动文件。

6.下面我们要将官方的固件库包里的源码文件复制到我们的工程目录文件夹下面。


打开官方固件库包,定位到我们之前准备好的固件库包的目录STM32F10x_StdPeriph_Lib_V3.5.0LibrariesSTM32F10x_StdPeriph_Driver下面,将目录下面的src,inc文件夹copy到我们刚才建立的STM32F10x_FWLib文件夹下面。src存放的是固件库的.c文件,inc存放的是对应的.h文件。


7.将固件库包里面相关的启动文件复制到我们的工程目录CORE之下。     打开官方固件库包,定位到目录STM32F10x_StdPeriph_Lib_V3.5.0LibrariesCMSISCM3CoreSupport下面,将文件core_cm3.c和文件core_cm3.h 复制到CORE下面去。然后定位到目录STM32F10x_StdPeriph_Lib_V3.5.0LibrariesCMSISCM3DeviceSupportSTSTM32F10xstartuparm下面,将里面所有的文件同样复制到CORE下面


8.定位到目录:STM32F10x_StdPeriph_Lib_V3.5.0LibrariesCMSISCM3DeviceSupportSTSTM32F10x,将里面的三个文件stm32f10x.h,system_stm32f10x.c,system_stm32f10x.h,复制到我们的USER目录之下。然后将STM32F10x_StdPeriph_Lib_V3.5.0ProjectSTM32F10x_StdPeriph_Template下面的4个文件main.c,stm32f10x_conf.h,stm32f10x_it.c,stm32f10x_it.h复制到USER目录下面。


9.前面的步骤,我们将需要的固件库相关文件复制到工程目录下面,下面我们将这些文件加入我们的工程中去。右键点击Target1,选择Manage Components


10.Project Targets一栏,我们将Target名字修改为IAP-Bootloader,然后在Groups一栏删掉一个,建立三个Groups:USER,CORE,FWLIB.点击OK.可以看到我们的Target名字以及Groups情况。

11.往Group里面添加我们需要的文件。我们按照步骤10的方法, 右键点击点击IAP-Bootloader,选择选择Manage Components.然后选择需要添加文件的Group,这里第一步我们选择FWLIB,然后点击右边的Add Files,定位到我们刚才建立的目录STM32F10x_FWLib/src下面,选择需要的文件,然后点击Add,然后Close.可以看到Files列表下面包含我们添加的文件。


12.用同样的方法,将Groups定位到CORE和USER下面,添加需要的文件。这里我们的CORE下面需要添加的文件为core_cm3.c,startup_stm32f10x_md.s,USER目录下面需要添加的文件为main.c,stm32f10x_it.c,system_stm32f10x.c.这样我们需要添加的文件已经添加到我们的工程中去了,最后点击OK,回到工程主界面。

13.点击魔术棒,出来一个菜单,然后点击 c/c++选项.然后点击Include Paths右边的按钮。弹出一个添加path的对话框,然后我们将图上面的3个目录添加进去。记住,keil只会在一级目录查找,所以如果你的目录下面还有子目录,记得path一定要定位到最后一级子目录。然后点击OK.

14.配置一个全局的宏定义变量。按照步骤13,定位到c/c++界面,然后copy “STM32F10X_MD,USE_STDPERIPH_DRIVER”到 Define里面。这里解释一下,如果你用的是大容量那么STM32F10X_MD修改为STM32F10X_HD,小容量修改为STM32F10X_LD。

15.配置Output选项。定位到Output界面,点击Select Folder For Obiects...将目标文件选择到OBJ文件夹下。然后勾上下三个选项。其中Create HEX file是编译生成hex文件,Browser Information是可以查看变量和函数定义 

16..配置Debug选项。定位到Debug界面,选择ST-Link Debugger(按实际用的工具选择),勾选Use,点击右边的Setting选项,在弹出的Cortex-MTarget Driver Setup窗口中选择SW(按实际选择),选择确定。

17.配置Utilities选项。(1)定位到Utilities界面;(2)选择ST-Link Debugger(按实际用的工具选择);(3)点击右边的Setting选项;(4)在弹出的Cortex-MTarget Driver Setup窗口按下图红框4选择;(5)点击下方ADD;(6)在弹出的Add Flash Programming Algorithm菜单中选择STM32F10X Med-density Flash(按实际对应芯片选择);(7)选择完后点击Add;(8)选择确定,回到上一菜单后再次选择确定,回到主界面。

18.编写简单main函数,点击进行编译,编译完成后在OBJ文件夹中生成.hex文件

19.用ST Link将MCU与PC连接好后,点击将.hex文件下载到MCU中。


推荐阅读

史海拾趣

CANOPUS公司的发展小趣事

随着业务的不断拓展,CANOPUS开始专注于鼓的制造研究。在1984年,公司推出了其标志性产品——整木掏空榉木军鼓。这款鼓的独特之处在于其鼓腔是由整个树干挖空处理而成,导角也做了特有的设计。这一创新使得CANOPUS的鼓在音质和外观上都与众不同,迅速在市场上获得了认可。

Alpha Wire公司的发展小趣事

面对激烈的市场竞争,CANOPUS始终保持着创新的精神。公司不断推出新产品、新技术,以满足不同消费者的需求。同时,CANOPUS也注重品牌形象的塑造和提升,通过赞助音乐活动、举办音乐会等方式,提升品牌知名度和影响力。

这些故事只是CANOPUS公司在电子行业中发展的冰山一角。实际上,公司的发展过程充满了挑战和机遇,每一个阶段都离不开创始人的智慧和团队的努力。未来,随着科技的进步和市场的变化,CANOPUS将继续保持创新精神,为音乐爱好者带来更多优质的产品和服务。

EG & G Inc公司的发展小趣事

近年来,电子行业面临着诸多变革和挑战,如技术更新换代加速、市场需求变化等。为了应对这些变革,EG & G Inc公司不断进行战略调整和业务优化。公司加大了对新技术和新产品的研发力度,同时注重提高生产效率和降低成本。此外,公司还积极探索新的商业模式和市场机会,以保持其在行业中的领先地位并实现持续发展。

以上五个故事概述了EG & G Inc公司在电子行业中的重要发展历程和关键事件。这些故事不仅展示了公司的实力和成就,也反映了其在不断变革的市场环境中保持竞争力和持续发展的能力。

ANOVA公司的发展小趣事

ANOVA深知,成功的关键在于与合作伙伴的紧密合作。因此,公司始终与客户保持紧密的合作关系,共同开发特定的解决方案,协助制定部署策略。ANOVA的服务团队以客户的需求为导向,以十几种语言提供个性化的服务,确保每一位客户都能得到满意的解决方案。此外,ANOVA还积极与商业伙伴合作,共同开拓市场,实现共赢。

DBM REFLEX公司的发展小趣事

在全球环保意识日益增强的今天,DBM REFLEX积极响应可持续发展的号召。公司不仅在生产过程中注重环保和节能,还积极推广绿色产品和技术。同时,DBM REFLEX还积极参与社会公益事业,通过捐款捐物等方式回馈社会。这种对环保和社会责任的关注,使DBM REFLEX在电子行业树立了良好的企业形象。

Emerson公司的发展小趣事

1890年,Emerson在美国密苏里州圣路易斯市成立,最初是一家电机和风扇制造商。1892年,新公司靠交流电机起家,并生产出了第一批销往北美的电风扇,净销售额接近6万美元。随着技术的不断革新,Emerson于1897年开始生产吊扇,这一创新使得高层建筑更加宜居,吊扇业务迅速成为公司的重要收入来源。

问答坊 | AI 解惑

linux内核版本选择跟ARM芯片型号有关吗?

s3c2410大多移植2.4内核或是uclinux, 2440以后基本都是2.6内核,请问内核版本选择跟芯片有关吗? 网上看到有人在2410板子上移植成功2.6内核, 请问这样的配合合理吗? 会不会有在奔3机子上装winXP这种感觉呢?…

查看全部问答>

探秘中国IC设计发展迷局(四):硅谷模式不适全中国环境

四、硅谷模式不适全中国环境 很多从硅谷回国的海归在创业失败后,都会说,在中国运营公司比在硅谷要难。笔者在2005年和2006年认识了很多的回国创业的海归人士,当年都是雄心勃勃,结果,几年下来,现在大都已经宣布公司倒闭,有的回到美国去了,有 ...…

查看全部问答>

寻LED 电源老化装置

请问坛中谁有LED 电源老化的装备;此种装备可以让LED驱动做批量老化用;这种装备只能用led? 可否用功率电阻。…

查看全部问答>

求横流电路PCB 有奖励

本帖最后由 paulhyde 于 2014-9-15 09:12 编辑 求横流电路PCB 有奖励  …

查看全部问答>

【ADC10_B】怎么使用?

ADC10_B只有一个ADC10MEM0,也就是每次只能转化一个通道数据,如果我想同时转化多个通道的数据该怎么办呢?   我原本的想法有两个:   第一,采用Single-channel, single-conversion,每次转换好一个通道后,写指令改通道,再转换, ...…

查看全部问答>

TI femto solution

本帖最后由 dontium 于 2015-1-23 13:12 编辑 TI的收发集成方案请参考下面连接.AFE7225,TRF3720,TRF3711 ti./solution/femto_base_station …

查看全部问答>

新人求助 如何实现共阴数码管的控制

想做一个对共阴数码管和独立按键的操控,没想到输出的共阴数码管的信号最后是乱码……也不动,按键按了也不变,这个程序也没做完,我看把基本的加法实现了减法应该也能实现(从0+到99),但是没想到遇到了这样的问题,请大神帮忙看看代码有什么问题 ...…

查看全部问答>

哪个跑过TI DEMO2540 。。就是那个最简单的测试程序

我现在USB  DONGLE  端口 写00X0028  和1     或者 2 的时候蜂蜜器叫的方式不一样,,这个 00X0028  和1     或者 2 为什么是这个数字…

查看全部问答>