一.自己画了个板子,打样后,自己测试。部分原理图如下:
二.现在建立工程,编写程序来点亮这5个LED灯。
1.好的程序员自己写程序,优秀的程序员偷别人的程序。所以从ST官网上下载相应的资料en.stm32f0_stdperiph_lib.ZIP,解压到当
前文件夹得到STM32F0xx_StdPeriph_Lib_V1.5.0文件夹,打开后文件目录如下图:
其中,_htmresc(html rescource)文件夹的目录下就三张图片
           Utilities文件夹下是ST公司的评估板的应用Examples以及第三方支持工具补丁,暂时不关心;    
         MCD-ST Liberty SW License Agreement.pdf和 V2Release_Notes(html)顾名思义,暂时也不关心;
         stm32f0xx_stdperiph_lib_um这个文件是介绍如何使用STM32F0xx Standard Peripherals Firmware Library以及如何建立
         工程,需要重点关注;
            Libraries文件夹里是CMSIS库文件、STM32F0xx Standard Peripherals Firmware Library和STM32F0xx_CPAL_Driver(
            这个是干嘛的,现在我不是很清楚),该文件夹里的内容也需要重点关注;
            Projects文件夹下是一些工程模板和STM32F0xx_StdPeriph_Examples,该文件夹下的内容也需要重点关注;
2.说了那么多,可以知道ST给出的用IAR建立的工程模板在\:\STM32F0xx_StdPeriph_Lib_V1.5.0\Projects\STM32F0xx_StdPeriph_Templates\EWARM
目录下,如下图:
箭头所指的Project就是ST官网给的模板工程,用IAR打开它看看。
从图上可以看出文件目录结构有四个Group:CMSIS存放的是STM32F0xx CMSIS files;StdPeriph_Driver存放的是STM32F0xx Standard Peripheral's Driver files;
User存放的是main.c和stm32f0xx_it.c(stm32f0xx中断处理文件);Output程序输出Group。
Tips:在workspace toolbar选择工程配置,可以改变当前编译的对象(device 型号,默认是stm32f051),如下图:

注意观察上图中箭头所指地方的变化。

3.因为是要建立STM32F051的工程,所以我们选择STM32F051来编译一下。在Project - STM32F051上右击,选择Rebulid All,观察Message窗口的报错。
按照上图所示操作后,我们惊讶的发现编译器报了一堆错误,如右上图。不过别担心我们一个一个错误来定位解决。
4.先看第一个错误,

Fatal Error(致命错误):找不到源文件stm32f0xx.h,下面四行是编译器的四个搜索目录。大家应该注意到了,第一个目录就是工程文件的上一级目录,其他三个目录都是IAR编译器的安装文件的相关目录(为什么编译器会去找这几个目录,我也不是很清楚),结果就是都没有找到stm32f0xx.h这个文件。我们可以实际点开相关的目录来查看,也没有stm32f0xx.h这个文件。

Tips:既然编译器要找这个文件,说明有那个文件里include了stm32f0xx.h。双击上图中的Fatal Error或者四个searched目录行,可以在编辑窗口打开编译出错的第一地方,可以看见是什么文件include了stm32f0xx.h如下图:

可以看见是main.h里面include了stm32f0xx.h。

5.解决第一个错误,首先要找到源文件stm32f0xx.h的所在目录,然后再告诉编译器这个目录,这样编译器在编译的时候就会在相应的目录里找寻目标文件。\:\ST\STM32F0xx_StdPeriph_Lib_V1.5.0\Libraries\CMSIS\Device\ST\STM32F0xx\Include这个目录下有stm32f0xx.h。如下图:
然后再告诉编译器,编译的时候,要搜索这个目录。在Addtional include directories下添加路径,操作如下:

点击OK,我们再来编译看看结果如何。
Tips:这里有必要说明一下相对路径和绝对路径,绝对路径是说严格按照所给的路径,比如C:\Desktop\ST\STM32F0xx_StdPeriph_Lib_V1.5.0\Libraries\CMSIS\Device\ST\STM32F0xx\Include,

编译器会严格按照这个顺序一层一层的找。假设那天你把工程文件拷贝到另一个文件夹里,那么是不是意味着需要要重新添加或者改变路径呢?这样会很麻烦。所以用相对路径就不会有这个问题了,改的方法如下:

这样就不会出现工程拷贝到另外一个目录,需要再添加文件路径的问题。(左上图中第三个$TOOLKIT_DIR$\..\..\这个是干嘛的,我也不是很清楚)

会发现,错误还是24个,但是第一个错误已经不是找不到源文件stm32f0xx.h了,而是在stm32f0xx.h里没有选择相应的device型号(是STM32F051还是STM32F030呢?)。
6.解决新的第一个错误,双击上图中的箭头所指的错误,在编辑窗口中打开了错误的位置,如左下图:

如右上图中所示,把#define STM32F051的这行宏定义的注释符去掉,就等于把target device设置成了STM32F051。保存save all,再重新编译,看看结果如何。

可以看出,错误只剩下21个,并且搜索路径变成了5个,多出的一个就是我之前新添加的。可以发现这些错都是找不到StdPeriph_Driver这个Group里的stm32f0xx_ppp.c文件对应的stm32f0xx_ppp.h文件。

这些文件在下图所示的目录下:

把这个路径添加以下,选用相对路径如右上图,再编译观察结果如下图:

从上图可以看出,只有一个错误,但是好几百个警告。并且编译器的第一个就是警告,这个警告是为我们少了一个宏定义,把他的注释符去掉就可以了。如下图:

关于这个问题的说明在 二.1里提到的stm32f0xx_stdperiph_lib_um这个文件里有说明。
Tips:注意解决错误或者warning要从第一个地方下手,这在学C语言的时候已经知晓的,此处不再赘述。

再保存,然后编译,再查看结果。如下图:

从上图中得知,错误还剩下21个,但其实是一个错误,就是找不到stm32f0xx_conf.h,这个文件在如下图所示的目录中:
把他添加到编译器的搜索目录下,如下图:
再保存,再编译,看看结果如何。
终于没有错误了。

三、添加程序,点亮LED灯。

1.开main.c添加如下程序,

2.编译,下载发现LED灯亮了。
Tips:以上是在ST官方的的工程基础上修改的,实现点亮LED灯。但是这个工程里包含很多的文件分散在很多个不同的目录里,使用起来很不方便。比如需要把整个工程发给别人时,同时要把好多
不相关的文件发过去。还有一些相关的设置,我们也不是很清楚。下面,我们来跟深入的理解文件的目录结果,选择必要的文件。从零开始建立工程。
四、从零开始建立STM32F051工程。

1.在桌面新建一个名为“01STM32F051”的文件夹,这里面要存放很多各种各样源文件、头文件、工程文件以及编译输出的文件。参考ST官方工程的Group架构,我们新建名为“CMSIS”、“User”和“App”三个文件夹,其中App用来存放用户自己开发的应用程序文件,在“App”文件夹下新建“inc”和“src”两个文件夹,“inc”用来存放头文件,“src”用来存放源文件。拷贝C:\\ST\STM32F0xx_StdPeriph_Lib_V1.5.0\Libraries路径下的(如下图)“STM32F0xx_StdPeriph_Driver"文件夹到”01STM32F051"下。

此时“01STM32F051”文件夹下的目录结构如下:

2.现在除了“STM32F0xx_StdPeriph_Driver"文件夹,其它的文件夹里面都是空的,现在我们往每个文件夹里添加文件。 打开下图中的stm32f0xx_stdperiph_lib_um这个文件,在Main Page里面点击STM32F0xx_CMSIS files.

在右上图中,可以看到CMSIS包含哪些文件,以及每个文件的介绍以及一些简单的用法。现在我们就拷贝右上图中的4个文件到CMSIS文件夹里。其中stm32f0xx.h和system_stm32f0xx.h这两个头文件在如下图的目录下,
其中system_stm32f0xx.c在如下图目录下,

其中startup_stm32f051.s在如下图的目录下,注意下图中的中的arm、iar、gcc_ride7和TrueSTUDIO都是编译器,每个编译器的device startup file不一样。我们用的是iar所以选择下图箭头所指示目录的下的

startup_stm32f051.s文件。
Tips:细心的同学会发现上图中有startup_stm32f0xx.s和startup_stm32f0xx_ld.s这两个文件,这两个文件是干嘛的,建立工程需不需要用,我也不是很清楚。先不管,等一下建立工程编译的时候,看看有没有什么异常。
3.拷贝main.c、main.h、stm32f0xx_conf.h、stm32f0xx_it.c和stm32f0xx_it.h到User文件夹中,这些文件在下图所示的路径中,
细心的朋友也许会发现上图中的目录下也有一个system_stm32f0xx.c这个文件。那么这个文件和我们已经拷贝到CMSIS这个文件夹的system_stm32f0xx.c文件有什么区别呢?(用记事本打开这两个文件比较
发现,除了被注释掉的说明部分有些区别外,其代码部分一样)
4.打开IAR建立一个工程,按照下图的步骤。

这时候再看看”01STM32F051“这个文件夹下

5.在工程里添加4个Group,CMSIS,StdPeriph_Driver和User,如下图,然后记得要保存。

6.往每个Group里添加文件,把startup_stm32f051.s和system_stm32f0xx.c添加CMSIS这个Group里。如下图,
Tips:右上图的两个.h文件不用添加到Group里。如果不添加的话,那么编译器在编译的时候怎么找到这两个文件呢?还记得前一部分我们说的向编译器里添加搜索路径的内容,就是通过这样的方式,把文件相互关联起来。
7.往StdPeriph_Driver这个Group里添加文件,如下图,
8.往User这个Group里添加文件,如下图,
9.保存一下,现在我们来对工程进行一些设置。
选择Core和Device,stm32f051c8t6是cortex M0内核的,如下图,

改为相对路径,另外C:\\Desktop\01STM32F051\App\inc这个目录里虽然什么都没有,但是以后开发的时候会在里面放置application.h文件,所以现在也把他的目录添加编译器的搜素目录下。

因为我的烧录工具是ST-LINK,所以选择选择ST-LINK,大家可以根据自己的烧录工具来选择相应的Driver。
10.保存一下,然后按下图操作,


11.按下图所示插入图中代码,编译链接,下载,

12.单步调试至如下图是,5个LED灯全亮。

13.继续单步调试,则5个LED灯全灭,程序停在while(1)处。

Tips:点开main.c前面的+号,可以看见main.c文件里包含(包括嵌套包含)的头文件,如左下图;在任意一个头文件上右击选择File Properties

可以看到文件的location,这个是iar编译器的安装目录。(在安装iar时或者iar后,可以随时选择安装iar支持的各个厂商的各个型号的device,否则编译器可能无法为我们所用。)这个从这个文件的名称可以看出它的作用,二者结合有助于我们理解编译器和我们的工程里的文件是怎么紧密结合在一起的。

Tips:若设置工程时,不勾选左下图中的Use CMSIS选项,则编译会提示右下图的错误。

为什么呢?是因为core_cm0.h是CMSIS的一个重要文件,但是呢?我们告诉编译器的搜索路径里根本没有这个文件,所以会报错。解决的方法1:勾选Use CMSIS选项,让编译器用iar自己安装时一起下载的core_cmo.h文件。解决方法2:其实ST的官方资料里,已经给出这些必要的文件。我们可以把这些文件拷贝到工程目录下,或者工程目录下新建的或者任意的文件夹下,然后把这目录添加到编译器的搜索路径,就可以解决问题。ST官方的打包资料里的相应文件在下图所示的目录里,
Tips:更多的编译原理以及相应设置使用文件,我也在学习中,需要继续深入。

IAR forARM 建立第一个STM32F051的工程相关推荐

  1. 如何在iar中建立c语言文件,使用IAR创建新工程步骤(整理).docx

    IAR使用说明--新建第一个IAR工程 新建一个IAR工程有两种方法,新建工程有两种方法,一种是使用工程模板,另一种是使用已存在地工程来建立另外一个工程.这里讲第一个方法,第二个方法很简单,书稿上有阐 ...

  2. 如何在iar中建立c语言文件,使用IAR创建新工程的步骤

    kelly 发布于:周一, 08/15/2016 - 14:57 ,关键词: 新建一个IAR工程有两种方法,新建工程有两种方法,一种是使用工程模板,另一种是使用已存在的工程来建立另外一个工程.这里讲第 ...

  3. 使用Quartus建立第一个FPGA工程

    到 www.altera.com.cn 免费申请到Quartus网络版并且安装,这个过程非常简单. 安装好Quartus后,我们开始建立第一个FPGA工程,我们开始建立第一个FPGA工程. 打开后界面 ...

  4. 用过C#的朋友可能认为它是一种十分安全的语言,其实C#也可以做到经典的缓冲区溢出。 本文章将用一个实例来描述C#究竟是如何发生缓冲区溢出的! 首先建立一个C# Console工程,并开启工程的“允许

    用过C#的朋友可能认为它是一种十分安全的语言,其实C#也可以做到经典的缓冲区溢出. 本文章将用一个实例来描述C#究竟是如何发生缓冲区溢出的! 首先建立一个C# Console工程,并开启工程的&quo ...

  5. IAR新建第一个C语言工程

    IAR新建第一个C语言工程 新建一个工作空间(File–>New Workspace) 新建一个c语言工程(Project–>Creat New Project)–>(展开" ...

  6. 使用keil5的固件库建立第一个STM32工程

    这里小编使用STM32F103ZET6型号开发板为例,给大家介绍使用keil5的固件库建立一个LED灯闪烁的工程.这种方式简单直接易上手,特适合某些想偷懒或赶时间编程的朋友. 一.步骤: 第一步,选择 ...

  7. lin通信ldf文件解析_详细步骤讲解如何在CANoe中创建一个LIN通讯工程(多图+详解)...

    本文首发自微信公众号"汽车技术馆"! CANoe可以实现基于CAN通讯的通讯测试和仿真,同时也可以支持基于LIN通讯的通讯测试和仿真,如何在CANoe中建立一个基于LIN通讯的工程 ...

  8. lin通信ldf文件解析_手把手教你在CANoe中创建一个LIN通讯工程

    CANoe可以实现基于CAN通讯的通讯测试和仿真,同时也可以支持基于LIN通讯的通讯测试和仿真,如何在CANoe中建立一个基于LIN通讯的工程呢? 第一步:打开软件之后,主菜单选择file->n ...

  9. 区块链c端应用小程序_区块链如何真正起作用? 我建立了一个应用程序向您展示。...

    区块链c端应用小程序 by Sean Han 通过肖恩·韩 区块链如何真正起作用? 我建立了一个应用程序向您展示. (How does blockchain really work? I built ...

最新文章

  1. NR 5G EN-DC架构下的5G无线承载
  2. 我国手机浏览器用户达2.15亿
  3. app启动页数秒加载 代码_iOS 底层探索 - 应用加载
  4. 每天一道LeetCode-----计算给定范围内所有数的与运算结果
  5. js保持div悬浮,不随页面向下滚动而被覆盖
  6. IBM Storwize V7000 Introduction(1)
  7. 如何在vsc上下载php扩展包,正确的 Composer 扩展包安装方法
  8. php同时抢购 代码,浅谈PHP实现大流量下抢购方案
  9. Python入门篇之字符串使用
  10. 丙烯怎么做成流体丙烯_怎么选择聚丙烯酰胺的分子量
  11. bulk interface驱动_USB驱动程序(较详细)三
  12. 测试宝宝照片的软件,未来宝宝照片合成器
  13. 2020-12-24 微信小程序 tabbar icon 控件 阿里矢量图库
  14. react项目中使用echart
  15. python输出保留两位小数怎么表示_python格式输出的实现方法保留2个小数位
  16. java时间的最大毫秒数是多少_一分钟等于多少毫秒 jAVA处理日期(Date)时间(Time)以及相关类的介绍...
  17. 高考476分在浙江计算机学院,2021年高考476分左右能上什么大学(100所)
  18. 样本不平衡的解决方案(很详细)
  19. python爬取数据时报错:`aiohttp.client_exceptions.ClientConnectorCertificateError: Cannot connect to host sea
  20. 小白版的springboot中集成mqtt服务(超级无敌详细),实现不了掐我头!!!

热门文章

  1. 美国精神的象征,就是美国队长,三维模型来了
  2. SSM垃圾分类小助手毕业设计-附源码191356
  3. 苹果CEO史蒂夫·乔布斯(Steve Jobs)在斯坦福大学的演讲稿,中英文对照版
  4. i10在java中什么意思啊_Java的Integer和int有什么區別
  5. 山东省高等学校计算机等级考试真题,2013山东省计算机等级考试二级试题及答案...
  6. R语言 ComplexHeatmap的安装
  7. CentOS7使用yum安装MySql并开启远程
  8. 《暮色心迹》开机大吉,在上虞上演一场蓄谋已久的爱情对弈
  9. 检测微信号码工具|官方正式版
  10. Ubuntu: 将bing主页的背景图片设置为桌面壁纸