1. 引言

在使用进行STM32F407开发的时候,一般被推荐使用的是Keil。经过一整子的Keil洗礼,我真的要崩溃了,在界面、调试、代码跳转、代码格式化、开发效率等方面一直很抓狂。之前一直使用vs code开发,用着还蛮顺心,界面风格很讨人喜欢。因此,尝试在vs code上进行STM32开发。接下来主要讲述个人将Keil和vs code环境搭建问题以及一些小Tips。


2. 环境搭建

2.1 Keil环境搭建

2.1.1 Keil安装

关于Keil程序的安装,网上已经有很多优秀的教程,此处贴出不错的博文。Keil的下载地址为https://www.keil.com/download/product/,其中会看到MDK-ARM,C51,C251,C166,关于他们的区别可以查看链接Keil 5(C51, MDK) 官方下载方法。若使用的板子是STM32,则选择MDK-ARM,若是51系列的开发板,则选择C51,根据个人所需,选择合适的版本(本人一般使用STM32F407,所以选择MDK-ARM)。安装之后需要对其进行破解,安装及破解步骤可参考链接Keil5的安装破解方法。

2.1.2 Keil魔术棒设置

打开Keil,找到菜单栏Pproject -> New uVersion Project...创建一个新的工程项目,随意命名(最好不要包含中文字符)并保存在一个新建的文件夹中,之后会弹出提示框选择芯片,搜索自己想要的芯片即可。

将在新创建的文件夹下得到如下图所示:

程序自动创建ListingsObjectsDebugConfig三个文件夹。前两个是我们在日常开发中需要关心的。Listings存放编译过程的中间文件,Objects存放编译结果的文件,所生成的.hex将会在这找到。

接下来重点就是魔术棒的设置。

  1. 首先找到魔术棒的位置,如图所示。

  2. Target设置

    这里主要选择合适的编译器,根据自己MDK版本选择合适编译器即可。

  3. Output设置

    这里的设置将会影响到编译过程中所产生文件的存放位置以及生成的文件名。Select Folder for Objects...选择某个文件夹存放编译结果。这里可不用修改,编译结结果存放在当前工程目录的Objects里。Name of Excuetable设置生成将要烧写进开发板里的文件名。还要注意,要将Create GEX File勾选上,产生.hex文件,方便后续程序烧写。

  4. Listing设置

    这里的设置主要会影响编译过程中间文件的存放位置,默认存放在当前工程目录下的Listings里。

  5. C/C++设置

    这里是最重要的设置。

    一个是预编译器符号,另一个是头文件的路径。Preprocessor Sysbols设置两个宏函数,分别为USE_STDPERIPH_DRIVERSTM32F40_41xxx。这两个文件的目的就是配置程序正确使用对应芯片的相关外设头文件和源文件。这两个参数对应的标准库的文件为stm32f4xx.hstm32f4xx_conf.h。使用stm32f407的芯片需要配置这两个参数。

    另一个是头文件的添加。Keil编译器和以往用的编译器不一样,即使在工程目录创建的头文件和源文件,依然要在Keil工作界面添加源文件和头文件的路径。下图是我某个工程的头文件路径,仅作参考。关于其中不同路径下的文件,我将在项目模版中进行一一说明。

  6. Debug设置

    通过画圈的位置选择合适的仿真器,因为我是用的是野火的stm32f407开发板,他们送的是DAP仿真器,因此选择CMISI-DAP即可。根据个人喜好勾选Run to main(),每当烧写完成,程序会自动运行main函数。通过Setting,设置仿真器的配置。

    这是主要设置Flash Download配置,勾选Reset and Run,当程序烧写完毕,开发板会复位启动。

    关于魔术棒的设置基本就是这些。

2.1.3 项目模版说明

如图所示,一个ARM工程的基本模板如下:

  • App

    主要存放用户的模块文件,例如呼吸灯、ADC等文件。

  • Doc

    存放工程的说明文档或一些其他技术文档。

  • Libraries

    这里才存放的就是STM32外设库STM32F4xx_StdPeriph_Driver以及芯片驱动文件CMSIS,包括启动文件、库源码及头文件。这个文件可以在官网进行下载。

    链接:STM32F4 DSP和标准外设库(https://www.st.com/zh/embedded-software/stsw-stm32065.html#overview)

    概述页下拉,选择合适的版本即可。

    解压得到

    我们只需将Libraries复制到我们的工程目录下即可。

  • User

    主要存放main.hmain.cstm32f4xx_conf.hstm32f4xx_it.hstm32f4xx_it.c,后面三个文件是stm32的中断配置以及芯片配置的头文件和源文件。用户的中断函数一般在stm32f4xx_it.hstm32f4xx_it.c中实现。这几个从STM32F4xx_DSP_StdPeriph_Lib_V1.8.0/Project/STM32F4xx_StdPeriph_Templates/中找到直接幅复制到工程目录下的User文件下即可。

最终的结果如下:

2.1.4 Keil IDE工程文件创建

Keil IDE的工程目录和项目目录有些差别,但是Keil IDE的工程文件源头都是项目中。创建方法是选择Target -> Manager Project Items,在Groups中一次添加相关文件,如下所示分别创建几个目录:

  • STARPUP

    整个项目的启动文件startup_stm32f40xx.s。这个在目录Libraries\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm\中,因为所使用的芯片是ARM,选择ARM目录下的相应的启动文件。除了ARM,还有gcc_ride7、iar等编译器的启动文件。

  • App

    这里为用户创建的相关应用源文件,在项目工程中导入即可。

  • CMSIS

    这里导入的是芯片的库源程序,主要导入system_stm32f4xx.c即可,这个函数涉及系统初始化、系统时钟初始化、外部存储扩展等核心函数,在目录Libraries\CMSIS\E:\ARM_workspace\05\Libraries\CMSIS\Device\ST\STM32F4xx\Source\Templates下。

  • StdDrive

    这里将芯片外设的源文件全部导入即可。将Libraries\STM32F4xx_StdPeriph_Driver\src\里的所有源文件导入。

  • User

    导入main.c程序入口以及中断配置文件stm32f4xx_it.c即可。

最终效果如下:

添加完之后,还需要设置相关的头文件路径。

注意:编译的过程中会遇到如下错误,提示FMC_XXX未定义,此时将StdDriver中的stm32f4xx_fmc.c删除即可。

2.2 Vs code环境搭建

2.2.1 vs code安装

关于User和 System的版本区别,建议参考这篇文章VS Code User和System版区别_devxzh的博客-程序员秘密_vscode的user和system。个人推荐使用System版本。

2.2.2 vs code常用插件

  • KeilAssistant及设置

    打开vs code,步骤1点击插件按钮,然后搜索关键字,选择Keil Assistant进行安装,最后一步,也是最关键的一步是配置Keil的启动路径。点击步骤5中设置按钮,得到如下图:

    依次配置Keil的启动可执行文件即可。至此,用vs code从工程目录打开,即可看到Keil选项。

    这个插件允许我们对Keil项目进行编译和烧写。

    在vs code对代码的改动,会依次同步到Keil环 IDE相应源码的改动。前提:改动的源码已经被添加到Keil IDE中。图中Target1项目本人并有没有添加相关的源文件,因此此时我改动main.c并故意写了一个bug,Keil IDE并没有main.c源文件,编译(图中画圈的地方从左至右分别为 Build、Download to Device、Rebuild)Keil程序并没有报错。

    注意:因为本人已经安装号Keil Assistant,因此步骤4中的安装按钮显示为卸载

    如上述步骤,依次安装Chinese翻译、Intelligent 代码提示、C/C++等插件。这些插件根据需要进行相关设置。

3 Tips

  • Tip1 快速注释

    可以通过设置->用户代码->c.json,创建快捷键注释模版

    当我们在代码中打出prefix字符时,IDE自动提示prefixVar,选择prefixVar,就会出现注释模版,这个极大提高工作效率。

  • vs code识别c和c++的问题

    因为vs code不区分C和C++,当创建某个c文件的时候,vs code自动识别为c++。一般识别为C++文件,用快捷键注释就出现问题。

    为此,为了将文件文件识别为C文件,在setting.json中添加如下代码即可。

总结

本文写得比较粗糙,排版很有很多需要学习的地方。若内容如有不对的地方,欢迎在评论区指正。

【STM32F407】Note_01 STM32 编程环境搭建 -- Keil与VS code组合相关推荐

  1. 1、STM32开发-环境搭建-Keil5安装

    MDK Keil STM32开发环境搭建 一.准备 1.MDK 安装包获取 ​MDK安装官网下载,在官网选择MDK-Arm选项 ​ 在表单中填写个人信息,最后点击Submit提交,便自动进入软件下载界 ...

  2. MSP432编译环境搭建--KEIL版

    MSP432编译环境搭建--KEIL版 前言 一.KEIL5下载 二.安装步骤 1.安装芯片包 2.创建例程 (1)安装SIMPLELINK (2)直接找到官方所给例程 (3)使用例程 三.使用心得 ...

  3. Qt在Windows下的三种编程环境搭建

    未经验证,记录在此. 尊重作者,支持原创,如需转载,请附上原地址:http://blog.csdn.net/libaineu2004/article/details/17363165 从QT官网可以得 ...

  4. Java基础第一讲:Java的故事和Java编程环境搭建

    { Android学习指南 } 适于自学的ANDORID学习指南,基于ANDROID 2.2.2.3.3及3.0版本讲解 <ANDROID学习指南>目录 RSS Java基础第一讲:Jav ...

  5. verilog 编程环境搭建1 —— Quartus 安装与配置

    verilog 编程环境搭建1 -- Quartus 安装与配置 Quartus 下载 官方下载地址:Intel® Quartus® Prime Pro Edition Design Software ...

  6. eclipse+gcc STM32开发环境搭建及调试

    记录一下本人进行eclipse+gcc stm32开发环境的搭建过程,以便后续学习使用 参考资料如下: CubeMX+Eclipse+Jlink STM32开发环境搭建_小裘HUST的博客-CSDN博 ...

  7. 《高效玩转 vscode》- 1:基础编程环境搭建

    vscode 基础编程环境搭建 一.配置C/C++环境 1.下载minGW 2.下载vscode 3.配置clang-format 默认配置 自定义配置 注意 我的 .clang-format 配置 ...

  8. visual studio学习python_python3从零学习-开发环境搭建之Visual Studio Code篇

    开发环境搭建之Visual Studio Code篇 上一节讲了Python环境的安装和开发环境的安装,本节再重点讲下Visual Studio Code的配置.安装 请看我上一篇文章<pyth ...

  9. python语言编程环境-python3编程环境搭建

    python语言介绍 随着人工智能浪潮的再次到来,也让python语言更加的流行,看看近几年的编程语言排行榜吧,你就知道python有多火:学习一门流行度高的语言意味着有更多的志同道合者.更多的学习资 ...

最新文章

  1. 批量导出AD组内的成员
  2. IE下ajax响应慢,IE9上的Jquery Ajax调用非常慢,但在IE9中非常快
  3. mysql_select按照指定的格式输出到文件
  4. Windows下用Mingw编译Boost.Regex库
  5. 【Angular专题】——【译】Angular中的ForwardRef
  6. MS CRM 4中,添加营销列表成员查找列
  7. 阿里云开源镜像站下载最新Ubuntu和CentOS镜像
  8. 机器学习--组合分类方法之AdaBoost算法实战(单层决策树原理代码详解)
  9. matlab拟合分析画不出线,lsqcurvefit曲线拟合后,用polt函数画不出拟合的图形
  10. 扩展整数poj 1061 青蛙的约会 扩展欧几里得
  11. 台式计算机如何连接手机热点上网,家里台式没有网络 想用手机热点来连接电脑上网 怎么处理?...
  12. 回炉STM32入新坑cubemx
  13. 什么是数位板? 数位板,又名绘图板、绘画板、手绘板等等,是计算机输入设备的一种,通常是由一块板子和一支压感笔组成,它和手写板等作为非常规的输入产品相类似,都针对一定的使用群体。 与手写板所不同的是
  14. java 配置文件加密_Spring cloud config 配置文件加密方式
  15. python 输出第一行1个* 第二行3个* 第三行5个*
  16. 期货反跟单-千万不要盲目开始反跟单交易
  17. 携程集团招股说明书-港股
  18. 边云协同的优点_边云协同
  19. TM卡 DS1990A读写程序
  20. 分享几款手写有趣的html5网页小游戏

热门文章

  1. 【监控利器Prometheus】——Prometheus+Grafana监控服务器资源
  2. win10下查看系统自带壁纸的路径
  3. MATLAB红苹果提取(颜色分割)
  4. 进销存源码下载 mysql_java 进销存管理源码(含mysql脚本)
  5. Playwright-Node.js 自动化办公
  6. 大学教授课堂上吸烟,不是什么不得了的事!
  7. 二十年不抽烟买保时捷问题
  8. 体系化探讨令人头疼的JOIN运算
  9. java获取用户ip_Java获取用户访问IP及地理位置的方法详解
  10. 软银:Massive MIMO是5G的关键