1、到官网下载固件库,类似"STM32F0xx_StdPeriph_Lib_V1.5.0",解压得到文件"_htmresc" "Libraries" "Projects" "Utilities".
①“Libraries\STM32F0xx_StdPeriph_Driver”下的inc与src是底层驱动。
②“Libraries\CMSIS\Device\ST\STM32F0xx\Source\Templates\iar”下的.s文件是芯片在IAR编程的启动文件,选错会报大量的“startup”错误。
③ “Libraries\CMSIS\Device\ST\STM32F0xx\Include”下有此芯片的系统配置文件。“system_stm32f0xx.h”和“stm32f0xx.h”
④ “Libraries\CMSIS\Device\ST\STM32F0xx\Source\Templates”下有系统时钟配置文件“system_stm32f0xx.c”
⑤“Projects\STM32F0xx_StdPeriph_Templates”下有stm32f0xx_conf.h、stm32f0xx_it.c、stm32f0xx_it.h
⑥“Projects\STM32F0xx_StdPeriph_Templates\EWARM” 下有 stm32f0xx_flash.icf、stm32f0xx_ram.icf (STM32F10系列:stm32f10x_flash.icf、stm32f10x_flash_extsram.icf、stm32f10x_nor.icf 、stm32f10x_ram.icf ).
2、建立工程目录
①Libraries用来存放固件库文件
②Project用来存储 芯片的配置文件和代码,另外新建一个“EWARM”文件夹用来存储工程项目
3、把固件库的文件拷贝到工程目录
①把固件库"Libraries"文件夹内的所有文件拷贝到工程目录的“Libraries”下。
②把固件库"Projects"文件夹内的stm32f0xx_conf.h、stm32f0xx_it.c、stm32f0xx_it.h复制到工程目录"Project"下。
③ 把固件库“Projects\STM32F0xx_StdPeriph_Templates\EWARM”下的stm32f0xx_flash.icf 、stm32f0xx_ram.icf (STM32F10系列:stm32f10x_flash.icf、stm32f10x_flash_extsram.icf、stm32f10x_nor.icf 、stm32f10x_ram.icf ).复制到工程目录"Project\EWARM"下。
4、打开IAR,新建workbench—》新建project。
①建立项目后,就对文件进行分组,以及加载对应文件,以便清晰结构。如下图:
②设置IAR常规设定
5、编译出现常规错误:
①没有定义芯片类型:#error directive: "Please select first the target STM32F0xx device used in your application (in stm32f0xx.h file)" 在 stm32f0xx.h 去掉对应的注释。
或者在 IAR设置的Defined symbols 中填上芯片型号"STM32F030"
②找不到头文件 :Fatal Error[Pe1696]: cannot open source file "stm32f0xx.h" ,inc的工程目录没有设置好。
$PROJ_DIR$\..\ 工程目录的上级目录
$PROJ_DIR$\..\..\ 工程目录的上级目录的上级目录
$PROJ_DIR$\..\..\Libraries\CMSIS\Include\
$PROJ_DIR$\..\..\Libraries\STM32F0xx_StdPeriph_Driver\inc\
关键字:STM32F0 IAR 新建工程
引用地址:
STM32F0在IAR新建工程
推荐阅读最新更新时间:2024-03-16 16:14
IAR 开发STM8 学习
刚刚接触STM8单片机,之前一直在Linux下开发,一时有点懵逼了,于是把自己的一些学习过程记录下来,希望对与像我这样的门外汉有所帮助。 1、安装IAR软件: 百度一下,一大堆的安装教程, 我安装了2.0以上的版本,需要license,我用注册机生成的注册码填进去,一直提示注册码无效, 没办法使用,最后只能安装 1.42版本的IAR,(安装时记得安装ST-LINK驱动); 2、在IAR中创新工程:project- create new project 然后选择模板, 我选择的是C模板,点击OK, 就会生成一个main.c文件及main函数; 3、把库文件拷贝到工程目录下,(这里我拷贝Libraries 、 Utiliti
[单片机]
STM32F0红外发射功能的应用
久闻STM32F0系列内置IR_OUT红外发射功能,此次有幸得到社区赠送STM32F0308-DISCOVERY,终于有机会动手体会。 在许多应用场合需要红外发射管连续发送经过调制的38KHZ脉冲信号,经过接收头接收后送信号处理电路来判断其间有否物体经过。以往使用单片机来处理需要先从IO口产生38KHZ的PWM信号,再通过定时器中断来控制PWM信号的开启和关断。本例中定时器需要每500微秒中断一次来执行该任务,当CPU还有其他更重要的任务要处理日就显得有些紧张。 图1 STM32F0系列的一个特色是增加了IR_OUT功能,它在内部把TIM17-CCR1和TIM16-CCR1经过与非门从IR_O
[单片机]
IAR for stm8 新建工程模板
第一步:安装IAR for stm8 (略) 我使用的1.31版本,使用一个多月还没发现问题。 第二步:新建工程 1.新建文件夹test,再在test文件夹下建立user文件夹 2.打开IAR for stm8 1.31 3.点击 Project -- Creat New Project 4.弹出如下对话框,选择STM8 Series -- Empty project -- OK 。 5.保存.ewp文件到刚才新建的文件夹1-LED -- user下,取名test 。 6. 鼠标放蓝色处,右击 Add -- Add Group 。 7. 取名user ,点击OK 。 8. 点击 File --
[单片机]
STM32F0单片机快速入门七 串口(UART)操作从轮询到中断
1.从轮询到中断 很多同学都不喜欢用中断,而偏爱用轮询的操作方式。 这是不是和我们的天性有关呢?每个人都喜欢一切尽在掌握中,肯定都不喜欢被打断。我们常常都有这样的经验:正在跟别人说一件事,然后突然有个电话打进来,Call打完后突然记不起来刚才讲到哪了!这种糟糕的体验对我们影响是如此深刻,以至于我们认定机器可能也是这样吧,频繁的中断会不会把事情搞乱呢?好在机器虽然大部分时间都比人笨一些,但在处理这种问题上却能做到一丝不苟。机器在中断来的时候总会老老实实地先把当前正在做的记录下来,然后转去处理中断事件,中断处理完后分毫不差地恢复原来的工作。 仔细想一想,我们是不是也可以在接电话前先用个小本儿记录一下正在讲的事情呢?我们为什么没有这么
[单片机]
STM32单片机小Tips(6):玩转IAR,开发STM32
从51开始,单片机玩了很长时间了,有51,PIC,AVR等等,早就想跟潮流玩玩ARM,但一直没有开始,原因 -----不知道玩了ARM可以做什么(对我自己而言)。如果为学习而学习,肯定学不好。然后cortex-m3出来了,据说,这东西可以替代单片机,于 是马上开始关注。也在第一时间开始学习,可惜一开始就有点站错了队,选错了型(仍是对我自己而言)。我希望这种芯片应该是满大街都是,随便哪里都可以买得 到,但我选的第一种显然做不到。为此,大概浪费了一年多时间吧,现在,回到对我来说是正确的道路上来啦,边学边写点东西。 闲话多了些,就权当前言了。下面准备开始。 STM32单片机小Tips之RTC实践 BKP还没有搞完,
[单片机]
在IAR编译器中使用NEC 78K0系列单片机
最近在IAR编译器下针对NEC的78K0系列单片机作了一些开发。主要原因是IAR的编译器确实编译效果不错啊。最大体现就是编译出的代码空间比较小。毕竟人家是专门做编译器的。 下面是最近学会的一些扩展功能,写出来共享。如果以后会用其它功能的的话,我会及时更新。 1、__disable_interrupt();__enable_interrupt(); 这两个大家一看应该就知道是干什么用的了 禁止中断和使能中断的。 2、#pragma constseg = OPTBYTE __root const CPU_CHAR OptionByte = { 0x00, 0x00, 0x00, 0x00, 0x02
[单片机]
用IAR EWARM开发嵌入式系统时目标代码的链接与定位
1 数据段和代码段的作用 IAR C/C-+编译器是一种具有世界先进水平的标准C/C-+编译器,支持符合ANSI C标准的C或C++编程语言。源程序经编译后生成包含数据或代码存储器逻辑映像的数据段和代码段。每个段都有一个段名和一个表示其存储器空间的段类型。段类型CODE表示ROM中的执行代码,段类型CONST表示ROM中的数据,段类型DATA表示RAM中的数据。段名可与段类型相同,但其意义不一样,实际使用时不能混淆。表l所列为IAR C/C++编译器所使用的各种段、段类型及其读/写属性说明。 1.1 数据段 数据位于DATA段中,包括静态(static)存储器、堆栈(stack)、堆(heap)以及已定位的数据。DATA段可
[单片机]
IAR for AVR 学习笔记(6)--中断及相关函数操作
6.1.中断函数: 在IAR编译器里用关键字来__interrupt来定义一个中断函数。用#pragma vector来提供中断函数的入口地址 #pragma vector=0x12//定时器0溢出中断入口地址 __interrupt void time0(void) { ; } 上面的入口地址写成#pragma vector=TIMER0_OVF_vect更直观,每种中断的入口地址在头文件里有描述。函数名称time0可以为任意名称。中断函数会自动保护局部变量,但不会保护全局变量。 6.2.内在函数也可以称为本征函数 编译器自己编写的能够直接访问处理器底层特征的函数。在intrinsics.h中有描述完整类型在comp
[单片机]