专栏首页秘籍酷使用固件库创建STM32工程

使用固件库创建STM32工程

如果你手头有一个粤嵌的STM32战斧开发板,那代表硬件开发资源你已经有了,电脑开开,把线接好,大概是这个样子:

要注意的有这么几点:

A) 整个板子,确保只有一路供电,比如接了JLink就不必再插单独电源了。

B) 认清杜邦线颜色,不要将VCC和GND接反了,否则会烧坏。

接下来就是如何配置软件环境,建立一个最简单的项目工程,并烧写到开发板中去运行。这是STM32学习的第一步,创世纪第一章,神说:要有光!

单片机开发,大家最熟悉的莫过于Keil了吧,以前搞C51的时候你肯定使用过,Keil是公司的名称,有时候也指Keil公司的所有软件开发工具,2005年Keil由ARM公司收购,于是多了个名字叫MDK,我安装了MDK-5.14,请看靓照:

MDK(Microcontroller Development Kit),也称MDK-ARM、KEIL MDK、RealView MDK、KEIL For ARM,都是同一个东西。ARM公司现在统一使用MDK-ARM的称呼,MDK的设备数据库中有很多厂商的芯片,是专为微控制器开发的工具,为满足基于MCU进行嵌入式软件开发的工程师需求而设计,支持ARM7,ARM9,Cortex-M4/M3/M1,Cortex-R0/R3/R4等ARM微控制器内核。

当然可能有些人在使用MDK-4,这两个版本理论上来说对我们开发没有本质的影响,都只是一个工具而已。他们的区别是:Keil4(或称MDK4)的安装接近傻瓜操作,将芯片的支持包绑定在软件上,也就是说所有他所支持芯片都预装好了,你只需要在使用的时候挑选就可以了,这一方面方便了操作,另一方面增加很多不必要的支持包,使得整个软件变得比较臃肿。

这个做法在Keil5(或称MDK5)中被摒弃,MDK5的安装不再默认将所有芯片支持包安装在软件内,你会发现MDK5装完之后瘦身明显,由原来的570d多MB变成350多MB。

当然,MDK5会多一个步骤,那就是需要独立安装你所需要的固件支持包,这个我觉得是一个非常人性化的设计,本来就该如此,用什么装什么,电脑里面再也不会塞了一堆不用的东西,这对于有代码洁癖的理工男来说简直不能再赞!

有需要的同学,在本公众号中回复“MDK”,可获取MDK5和STM32F4xx支持包下载链接。注意在公众号中回复,不是在本文留言回复

装好之后,启动MDK5,依次点击 project 》manage 》 Pack Installer,你会看到如下的对话框:

可以看到,我为MDK5安装了STM32F1xx和STM32F4xx的开发固件库。

在创建第一个工程之前,还需要下载固件库的源代码,如下:

一切准备妥当,现在,我们来创建一个使用GPIO点LED的实验的工程项目。

第一步,在电脑随便一个地方,创建如下文件夹:

注意,以上文件夹的名字和功能并非工程要求,只是建议,他们的含义分别是:

Core 》存放Cortex-M4内核通用的启动代码,以及通用头文件

Driver 》存放各种外设的c文件和h文件

Project 》存放创建工程时默认生成的相关文件夹

System 》ST公司提供的系统初始化、中断服务模板等通用代码

User 》用户自定义文件

以上文件,除了User之外,统统在固件库源码的Libraries和Project中都可以找到,将它们搬移到相应文件夹下之后的样子是这样的:

接下来,将这些文件搞到MDK5中,创建一个工程

A) 点击 project 》New uVision Project

B) 在弹出的对话框中,选择相应的芯片,比如STM32F407ZETx

C) 接下来的对话框直接点击OK

D) 然后,在MDK5中,点击工具栏中的 品字形 图标,在弹出的对话框中,依次将文件夹中的文件全部添加到相应的栏目中:

E) 再然后,在MDK5中,点击工具栏中的 魔术棒 图标

在弹出的对话框中,要做以下事情:

E.1) 在C/C++栏目的define中,填入USE_STDPERIPH_DRIVER,STM32F40_41xxx

E.2) 在C/C++栏目的include path中,填入..\Core;..\Driver;..\System;..\User

E.3) 在Debug栏目的Use下拉框中,选择J-Link/J-Trace Cortex,再点击setting,弹出的对话框中,ort选择sw

E.4) 点击 Flash Download,勾选 Reset and Run,并且 Add 上正确的芯片

F) 编写一个优美的main.c文件(不行你就写个空的main函数意思一下)

G) 点击编译,然后点击烧写,将你的程序写入开发板。

至此,就是使用新版MDK-5.14创建STM32F4xx的工程的所有步骤。是的,步骤性的实验都是枯燥,繁复,索然无味,麻烦得要死,一个心法助你渡过难关:你所做的每一个步骤,在新进的公司里,都可能值个万儿八千的。

版权所无,欢迎分享,吐槽,转发,点赞。

本文分享自微信公众号 - 秘籍酷(mijiku040),作者:林世霖

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-07-05

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Linux基础(Ubuntu复制粘贴)

    作为被windows惯养的一代,我们都会ctrl+c和ctrl+v,但是这一招到Linux中的命令行终端下就不管用了。我们平时在终端是怎么复制粘贴的咧?不要捉急...

    用户2617681
  • Linux并发(函数的可重入性)

    可重入函数是并发编程中必须要考虑的问题,否则代码就会有隐患,更糟糕的是这些隐患往往只能在特定场景下才能复现。

    用户2617681
  • 当我们使用虚函数的时候,我们究竟想干什么?

    首先,我们要搞清楚女神的所作所为,即语法规范。然后再去探究她背后的逻辑道理。她的语法说来也不复杂,概括起来就这么几条:

    用户2617681
  • 2728 整数帝国问题

    2728 整数帝国问题 时间限制: 1 s 空间限制: 16000 KB 题目等级 : 白银 Silver 题目描述 Description   ...

    attack
  • 目标检测第2步-数据准备

    本文在学习《Tensorflow object detection API 搭建属于自己的物体识别模型(2)——训练并使用自己的模型》的基础上优化并总结,此博客...

    潇洒坤
  • JavaScript设计模式之终章:重构

    模式和重构之间有着一种与生俱来的关系。从某种角度来看,设计模式的目的就是为许多重构行为提供目标。

    一粒小麦
  • 【15】Python100例基础练习(2

    例6 题目:斐波那契数列 斐波那契数列指的是这样一个数列 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,...

    py3study
  • 三分钟Docker-镜像、容器实战篇

    本示例使用前几天分享的项目把AAStore.ProductCatalog.Api,选中项目右键->添加->Docker支持,就会看到生产的Dockerfile文...

    李明成
  • 如何快速推行单元测试

    众所周知,在软件开发流程中,问题发现的的越早修复成本越低,而单元测试就是让问题能够提早发现的一大利器。那我们在团队中,又该如何去利用这把利刃,以提升我们的工程效...

    用户5521279
  • js跨站脚本

    跨站脚本,称为xss这个术语用来表示一类的安全问题,指攻击者向目标web站点注入html标签或者脚本。

    mySoul

扫码关注云+社区

领取腾讯云代金券