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

这篇具有很好参考价值的文章主要介绍了【STM32F407】Note_01 STM32 编程环境搭建 -- Keil与VS code组合。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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...创建一个新的工程项目,随意命名(最好不要包含中文字符)并保存在一个新建的文件夹中,之后会弹出提示框选择芯片,搜索自己想要的芯片即可。stm32f407,STM32,stm32,单片机stm32f407,STM32,stm32,单片机

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

stm32f407,STM32,stm32,单片机

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

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

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

    stm32f407,STM32,stm32,单片机
  2. Target设置

    stm32f407,STM32,stm32,单片机

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

  3. Output设置

    stm32f407,STM32,stm32,单片机

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

  4. Listing设置

    stm32f407,STM32,stm32,单片机

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

  5. C/C++设置

    这里是最重要的设置。

    stm32f407,STM32,stm32,单片机

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

    stm32f407,STM32,stm32,单片机stm32f407,STM32,stm32,单片机

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

    stm32f407,STM32,stm32,单片机
  6. Debug设置

    stm32f407,STM32,stm32,单片机

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

    stm32f407,STM32,stm32,单片机

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

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

2.1.3 项目模版说明

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

stm32f407,STM32,stm32,单片机
  • App

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

  • Doc

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

  • Libraries

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

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

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

    stm32f407,STM32,stm32,单片机

    解压得到

    stm32f407,STM32,stm32,单片机

    我们只需将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文件下即可。

最终的结果如下:

stm32f407,STM32,stm32,单片机

2.1.4 Keil IDE工程文件创建

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

stm32f407,STM32,stm32,单片机
  • STARPUP

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

  • App

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

    stm32f407,STM32,stm32,单片机
  • 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即可。

最终效果如下:

stm32f407,STM32,stm32,单片机

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

stm32f407,STM32,stm32,单片机

注意:编译的过程中会遇到如下错误,提示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及设置

    stm32f407,STM32,stm32,单片机

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

    stm32f407,STM32,stm32,单片机

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

    stm32f407,STM32,stm32,单片机

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

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

    stm32f407,STM32,stm32,单片机

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

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

3 Tips

  • Tip1 快速注释

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

    stm32f407,STM32,stm32,单片机

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

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

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

    stm32f407,STM32,stm32,单片机

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

    stm32f407,STM32,stm32,单片机

总结

本文写得比较粗糙,排版很有很多需要学习的地方。若内容如有不对的地方,欢迎在评论区指正。文章来源地址https://www.toymoban.com/news/detail-597131.html

到了这里,关于【STM32F407】Note_01 STM32 编程环境搭建 -- Keil与VS code组合的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • STM32F407驱动GC9A01+CST816D触摸显示屏

    STM32F407驱动GC9A01+CST816D触摸显示屏 GC9A01是一款spi接口的1.28寸圆形屏,分辨率240*240,3.3v供电。 CST816D是一款IIC接口的触摸屏,模块上有4根信号线RST-复位线,INT-触摸中断线,当触摸屏检测到触摸信号后会输出高电平,SCL-数据时钟线,SDA-数据线。如果只是简单的使用INT线可以不

    2024年01月17日
    浏览(58)
  • 从STM32F407到AT32F407(一)

    雅特力公司的MCU有着性能超群,价格优越的巨大优势,缺点是相关资料少一些,我们可以充分利用ST的现有资源来开发它。 我用雅特力的STM32F437开发板,使用原子 stm32f407的开发板自带程序,测试串口程序,原设定串口波特率为115200,但是输出乱码,波特率改成230400,串口输

    2024年02月02日
    浏览(57)
  • STM32F407——串口通信

    本文将对串口通信的分类和基于 stm32 的串口配置进行介绍,以及如何使用串口调试助手进行串口收发功能的调试,旨在帮助还不会使用 stm32 单片机串口资源进行通信的家人们快速学会如何使用串口来进行通信。 (纯干货、快速上手、零基础也能会!!!) (1)串口,即串

    2023年04月08日
    浏览(48)
  • STM32F407的介绍

    内核 32位 高性能ARM Cortex-M4处理器 时钟: 高达168MHz,实际还可以超频一点点 stm32f407的主频通过PLL倍频后能够达到168MHz,而且芯片内置一个16MHz的晶振和一个32KHz的晶振,可以满足不同功耗的需求。 支持FPU(浮点运算)和DSP指令 144引脚 114个IO口 存储器容量: 1024K FLASH, 192K

    2024年02月10日
    浏览(51)
  • STM32F407的时钟

    时钟源用来为环形脉冲发生器提供频率稳定且电平匹配的方波时钟脉冲信号。它通常由石英 晶体振荡器和与非门组成的正反馈振荡电路组成,其输出送至环形脉冲发生器。 F4开发指南P107 F4开发指南P108 HSI高速内部时钟源 High Speed Internal。RC 振荡器,频率为 16MHz。可以直接作为

    2024年02月10日
    浏览(49)
  • 初识 STM32和STM32F407简介

    2007 年 6 月,ST 在北京发布了全球第一款基于 ARM Cortex M3 内核的 32 位通用微控制 器芯片:STM32F103,以优异的性能,丰富的资源,超高的性价比,迅速占领市场,从此一鸣 惊人,一发不可收拾,截止到 2020 年 6 月,STM32 累计出货量超过 45 亿颗。 战舰开发板使用的 STM32F103ZET6

    2023年04月08日
    浏览(70)
  • STM32F407 移植 FreeRTOS

    本实验是基于正点原子 STM32F407ZG 探索者开发板完成的,所以需要一个STM32F407ZG 探索者开发板 用于移植的基础工程(下面会讲) FreeRTOS源码(下面会讲) 本实验所有用到的代码:基于正点原子STM32F407的FreeRTOS移植工程.zip 1.1 移植前准备 1.1.1 基础工程 由于后续需要用到 LED、

    2024年02月08日
    浏览(65)
  • STM32F407的PWM

    泉水 STM32 的定时器除了 TIM6 和 7。其他的定时器都可以用来产生 PWM 输出。 高级定时器 TIM1 和 TIM8 可以同时产生多达 7 路的 PWM 输出。 通用定时器也能同时产生多达 4路的 PWM 输出 STM32F407 最多可以同时产生 30 路 PWM 输出! 这里我们仅利用 TIM14的 CH1 产生一路 PWM 输出。 如上所

    2024年02月17日
    浏览(43)
  • STM32F407 --USART使用

    目录 1. 串口配置--普通模式 2. 实现数据的传输主函数 1)单引号双引号的应用数组传输 2)将调试信息用串口打印传送到电脑上 1. 串口配置--普通模式 F407使用的M4内核与F103使用的M3内核不一样,导致在使用配置上有区别。需要在F103配置的基础上专门将GPIO的PIN配置成复用功能

    2024年02月16日
    浏览(54)
  • STM32F407添加DSP库

    编译程序出现以下报错 出现 “error: #5: cannot open source input file “arm_const_structs.h”: No such file or directory” 错误的原因是编译器无法找到名为 “arm_const_structs.h” 的头文件。 头文件路径错误 头文件未安装或丢失 编译器配置问题 添加DSP库 添加DSP库可以参考这篇博客: STM32CubeMX关

    2024年02月05日
    浏览(61)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包