Keil5新建STM32工程(详细图解)[通俗易懂]

Keil5新建STM32工程(详细图解)[通俗易懂]一、下载ST官方库    首先注册账号登录,然后点击产品、微控制器;如图       接着右侧的工具与软件;嵌入式软件,并选择STM32,如图。 我的是STM32F1系列,选择如图这个   获取软件   然后下载即可。 二、安装keil   不介绍。相信都安装好了。三、准备工作       新建project文件夹,并在里面新建三个文件夹,CMSIS(存放内核函数及启动引导文件)…

大家好,又见面了,我是你们的朋友全栈君。

一、下载ST官方库

      首先注册账号登录,然后点击产品、微控制器;如图

Keil5新建STM32工程(详细图解)[通俗易懂]

        接着右侧的工具与软件;嵌入式软件,并选择STM32,如图。

Keil5新建STM32工程(详细图解)[通俗易懂]

  我的是STM32F1系列,选择如图这个

Keil5新建STM32工程(详细图解)[通俗易懂]

    获取软件

Keil5新建STM32工程(详细图解)[通俗易懂]

    然下载即可。


 二、安装keil

    不介绍。相信都安装好了。


三、准备工作

      

  新建project文件夹,并在里面新建三个文件夹,CMSIS(存放内核函数及启动引导文件),FWLIB(存放库函数),USER(存放用户自己的函数),如图。

Keil5新建STM32工程(详细图解)[通俗易懂]

     解压下载的官方库,主要用到标出的两个。

Keil5新建STM32工程(详细图解)[通俗易懂]

    将STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport中的文件复制到CMSIS中,再将C:STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x中的文件全部复制到CMSIS中。最终CMSIS中的文件如图。

Keil5新建STM32工程(详细图解)[通俗易懂]

        将STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver中的 inc src 复制进FWLIB文件夹。

Keil5新建STM32工程(详细图解)[通俗易懂]

   将STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template中的这几个文件复制进USER,

Keil5新建STM32工程(详细图解)[通俗易懂]

      至此 准备结束。


四、新建工程


  打开keil,新建工程temp(原来有工程需要关闭),保存在刚刚新建的project里面。

Keil5新建STM32工程(详细图解)[通俗易懂]

        保存后会让选择芯片。我用的是STM32F103VE系列,所以选这个。

Keil5新建STM32工程(详细图解)[通俗易懂]

        确定之后跳出一个窗口,直接关掉(这是让选择启动引导等的,我们已经下载的库里有,所以跳过这一步)。点红线圈出的图表,然后把tegart1改为temp。删除掉SourceGroup1.

Keil5新建STM32工程(详细图解)[通俗易懂]

    依次添加CMSIS、USER、FWLIB、STARTUP,并把刚刚复制在对应文件夹下的文件添加。注意的是STARTUP要选择NewProject\CMSIS\startup\arm中的startup_stm32f10x_hd.s、startup_stm32f10x_ld.s、startup_stm32f10x_md.s三个。文件类型选择所有。  FWLIB中只需要添加src中的.c文件即可。  CMSIS中不需要添加STARTUP中的文件。 添加完毕点击OK。

Keil5新建STM32工程(详细图解)[通俗易懂]

    然后点击魔法棒,进入C/C++设置界面,在define一栏输入 STM32F10X_HD,USE_STDPERIPH_DRIVER ,并在includepath栏加入头文件路径。

Keil5新建STM32工程(详细图解)[通俗易懂]

           includepath内容如下

Keil5新建STM32工程(详细图解)[通俗易懂]

        至此,工程创建完毕。可以点击编译查看是否有错。


五、问题与调试

  编译后发现有错,因为直接用的库里的main函数,不包含#include “stm32_eval.h” 头文件,直接删除。并把其他main函数中未用内容删除,并在main函数中包含相关头文件。空白工程主函数如图。

Keil5新建STM32工程(详细图解)[通俗易懂]

 在编译,依然有错。

Keil5新建STM32工程(详细图解)[通俗易懂]

意思是引导文件太多。就是STARTUP中只能一个引导使用。因为此处用的HD,所以把另外两个 Options for File    中的include TargetBulid 和 Always Bulid 的灰色勾点掉。

Keil5新建STM32工程(详细图解)[通俗易懂]

       更改完毕后STARTUP中其他两个前面都有红色杠杠。

                                            Keil5新建STM32工程(详细图解)[通俗易懂]


再次编译,还是有错。

Keil5新建STM32工程(详细图解)[通俗易懂]

    说是 system_stm32f10x_1.c and system_stm32f10x.c 重复。

    但是检查工程栏未发现有system_stm32f10x_1.c。最后发现是包含文件中存在重复。点击如图方块,发现在CMSIS和USER中都包含有system_stm32f10x_1.c。把CMSIS中的system_stm32f10x_1.c删除。编译无错。

Keil5新建STM32工程(详细图解)[通俗易懂]


    保存一下,空白工程建立完毕!之后就可以根据手册进行开发了O(∩_∩)O哈哈~



        

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/142349.html原文链接:https://javaforall.net

(0)
上一篇 2022年5月23日 下午10:20
下一篇 2022年5月23日 下午10:40


相关推荐

  • 怎样在桌面建立透明框放置文件夹_雨滴桌面怎么用

    怎样在桌面建立透明框放置文件夹_雨滴桌面怎么用一、效果1、YcDock-left2.0动图是1.0版的,2.0是第二张图,懒得截动图了下载地址:2、YcDock-bottom2.0下载地址:喜欢的小伙伴点赞收藏下载吧

    2025年8月31日
    8
  • C#操作XML方法集合

    C#操作XML方法集合先来了解下操作XML所涉及到的几个类及之间的关系如果大家发现少写了一些常用的方法,麻烦在评论中指出,我一定会补上的!谢谢大家*1XMLElement主要是针对节点的一些属性进行操作

    2022年6月30日
    22
  • 史上最简单的SpringCloud教程 | 第四篇:断路器(Hystrix)

    史上最简单的SpringCloud教程 | 第四篇:断路器(Hystrix)在微服务架构中 我们将业务拆分成一个个的服务 服务与服务之间可以相互调用 RPC 为了保证其高可用 单个服务又必须集群部署 由于网络原因或者自身的原因 服务并不能保证服务的 100 可用 如果单个服务出现问题 调用这个服务就会出现网络延迟 此时若有大量的网络涌入 会形成任务累计 导致服务瘫痪 甚至导致服务 雪崩 为了解决这个问题 就出现断路器模型

    2026年3月19日
    2
  • mysql修改用户密码命令_linux下mysql修改用户密码命令

    mysql修改用户密码命令_linux下mysql修改用户密码命令Linux下有时候想要修改用户密码用什么命令呢?下面由学习啦小编为大家整理了linux下mysql修改用户密码命令的相关知识,希望对大家有帮助!linux的mysql修改用户密码命令详解修改的用户都以root为列。分为两种情况:linux修改mysql用户密码情况一、拥有原来的myql的root的密码方法一:在mysql系统外,使用mysqladmin#mysqladmin-uroot-p…

    2022年6月17日
    37
  • oracle查询时使用case,Oracle查询语句中Casewhen的使用[通俗易懂]

    oracle查询时使用case,Oracle查询语句中Casewhen的使用[通俗易懂]casewhen和decode函数用法有一些相似,只是decode是枚举函数,而casewhen则更加灵活,同时casewhen相当于一个特殊的只有两个枚casewhen语句语法如下:casewhen表达式thenvalueAelsevalueBend;具体使用如下:select(casewhena.column1>=1then’成功’e…

    2025年9月17日
    6
  • php js页面刷新,JS刷新页面方法总结

    php js页面刷新,JS刷新页面方法总结这次给大家带来JS刷新页面方法总结,JS刷新页面的注意事项有哪些,下面就是实战案例,一起来看一下。JS刷新当前页面的几种方法总结reload方法,该方法强迫浏览器刷新当前页面replace方法,该方法通过指定URL替换当前缓存在历史里(客户端)的项目,因此当使用replace方法之后,你不能通过“前进”和“后退”来访问已经被替换的URL返回并刷新页面自动刷新页面的方法js刷新页面方法大全页面自…

    2022年7月14日
    18

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号