IAR-STM32开发工程建立步骤
- 格式:pdf
- 大小:2.27 MB
- 文档页数:25
STM32工程建立与配置流程此次的STM32的学习,在程序的建立与配置上比以往的要更加复杂,所以我个人也是在新建工程以及配置工程中经常落下一些设置与操作,使整个程序无法仿真,或是程序编译出错,为了避免这样的一些基础的错误与麻烦,我个人整理了整个工程的建立到工程的全部设置,谈不上非常细致吧但也足够让一些像我一样的初学者避免一些错误,已经掌握的同学若在日后有忘记的地方也可非常方便的来查看一下。
下面就是创建与配置工程的全部过程,初学者请务必按顺序一步步查看。
1.新建一个文件夹(以后编的每一个工程都放进这个文件夹里,自己命名,例如:STM32 file)2.创建一个文件夹(名字可以根据你编写的程序来命名,如:Demo)2.1 新建子文件夹User,用于存放用户源程序2.2 新建子文件夹Project,用户KEIL工程文件2.3 在Project下依次创建Obj和List子文件夹,存放编译过程中产生的中间文件。
2.4 将main.c stm32f10x_conf.h stm32f10x_it.c stm32f10x_it.h system_stm32f10x.c等文件复制到User文件下3. 复制源代码到Demo文件夹3.1 将stm32f10x_stdperiph_lib3.5 / Libraries文件夹整体复制到Demo文件夹下这就是ST的标准库,是以源代码形式提供的。
也可将Libraries文件夹直接复制到STM32 file文件夹下,使其与以后创建的其他工程同在一个目录下,这样可使在该目录在的工程共享Libraries。
免得以后创建一个工程就得复制一次Libraries4.新建一个Keil MDK工程4.1 启动Keil MDK,点击菜单 New uVision Project,然后按向导进行操作4.2 选择CPU类型为 STM32F103RC4.3 当提示是否复制启动代码时,请选择否。
4.4 为了延长芯片使用寿命以及加快仿真速度,可以在ram中直接仿真(ram仿真速度快),用ram仿真在断电之后数据就全部丢失了,修改Target名字, 添加两个,一个Flash,一个Ram 如图4.5 为了便于代码管理,在这个Project下创建几个GroupUser : 存放用户自己写的源代码RVMDK : 存放启动文件(汇编文件)StdPeriph_Driver : 存放ST标准库文件CMSIS : 存放CMSIS接口文件(这也是库的一部分)4.6 创建好Group后,我们开始依次添加文件。
第一步:文件准备新建一个文件夹‘流水灯’用于存放工程然后将固件库FWLIB中的library文件夹复制粘贴到你所建的工程文件夹中;再将FWLIB中project文件夹中的main.c ,stm32f10x_conf.h ,stm32f10x_it.c ,stm32f10x_it.h 这四个文件复制粘贴到‘流水灯’中;再将FWLIB\project\EWARMv5\中的四个镜像文件(后缀为icf)的文件复制粘贴到‘流水灯’中。
再将上述文件夹中的cortexm3_macro.s ,stm32f10x_vector.c 复制粘贴到你的工程文件夹中。
到此文件准备就基本完成。
第二步:新建IAR工程启动IAR EWARM 5.40点project----create New Project选择Create New Project 后弹出一个如下窗口,在窗口中的下拉菜单中选择ARM ,在project templates 中选在Empty Project ,然后点击OK.点击OK后会弹出一个路径选择窗口,只需选择你所建的工程的路径,然后输入工程名即可,点击保存,就可看到左边出现了你刚刚新建的工程第三步 : 为工程添加分组及文件在左边的工程名上点击右键,选择ADD ---ADD Group ,添加三个分组:EWARM , FWLIB , USER将你所建工程中的main.c , stm32f10x_conf.h ,stm32f10x_it.c , stm32f10x_it.h这四个文件添加到USER 分组中;将cortexm3_macro.s , stm32f10x_vector.c 添加到EWARM分组中;将library\src中相应的文件(初学者亦可全选)添加到FWLIB中;之后只需在main.c中进行修改,编写你所需的程序即可。
但此时有可能出现一种情况就是main.c无法修改,本人建议将原来main.c中的内容全部复制,然后在工程文件夹中删除该main.c,然后新建一个文档,将其后缀改为.c然后将刚刚复制的内容粘贴到其中,最后再将其重新添加到USER分组中(应注意必须先Remove原先那个main.c)即可。
以前用IAR,正点原子提供的是MDK开发环境,我重新建立了一个IAR5.30工程,使用MDK库函数版本。
拷贝MDK库函数版本工程到一个工程目录下就好了,见下图。
几个icf文件要从其他地方考过来,不难的。
startup_stm32f10x_hd.s文件要使用IAR格式的,在IAR安装目录中有MDK,GCC,IAR三种格式的,需要使用IAR格式。
IAR开发环境设置。
这里要选择FULL ,不然会出现FILE not found 的错误。
上面的红圈很重要,第一个是头文件目录,必须要设置,工程下所有用到的.h文件第二个是宏定义,USE_STDPERIPH_DRIVER和STM32F10X_HD必须要添加,VECT_TAB_SRAM是正点原子工程中设置中断向量表到SRAM和FLASH中的宏定义,我使用SRAM调试,就需要定义这个宏了。
这里也很重要,这是设置SRAM和FLASH文件,我使用sram调试就利用SRAM那个icf文件了。
这是main.c文件,Systeminit();是我加上去的,如果不加好像也没有啥影响,不过在流水灯程序中如果不加,LED闪烁时间变慢,没有在MDK中的快。
所以,以后的工程,我都把这句加上了。
这是下载code到SRAM中的map文件,可以看到是下载到SRAM中,这样就可以调试了,上面说的是利用正点原子的库函数版本的程序,移植到IAR中的步骤,但是,我更喜欢使用寄存器版本的程序,因为条理和思路清晰,容易理解。
下面步骤是将寄存器程序移植到IAR中的,步骤和上面一样,但是要修改system.c文件,见下图,其中需要几句汇编,在IAR中是利用asm(“XXXX”);来声明嵌入汇编的。
下面是需要修改usart.c的文件,注释掉前面的#if 1,但是sys_exit()和重定义的fputc()需要保留。
然后寄存器版本的程序就可以移植到IAR5.30中了。
下图是在SRAM中调试寄存器版本的LCD测试程序界面。
应用MDK及IAR开发STM32F207流程一.开发工具及芯片1. 所用评估板为优易特的STM3220G-RDUET,所用主芯片为Cortex M3体系结构,芯片型号为STM32F207VGT6,最高主频可达120MHZ,内部1MB Flash,128KB SRAM。
开发板由核心板与底板组成,集成了USB、CAN、Ethernet、LCD,摄像头、SPI、SD卡等多种接口与模块。
在应用中主要对CAN、Ethernet、SPI、GPIO等模块和接口进行调试与评估。
2. 应用的开发工具为IAR 6.20及Keil的MDK 4.20。
在调试同一程序的前提下,在一个文件夹下建立两个子文件夹,用于建立两个不同的工程,分别支持IAR 6.20和MDK 4.20的调试。
二者共用官方提供的库文件及时钟配置文件。
二.MDK 4.20下建立工程与调试的方法MDK是Keil公司开发的一款基于ARM开发的编辑与调试工具,后被ARM公司收购。
在调试的过程中,通常采用将生成的代码下载到内部RAM中的方法,便于调试程序。
调试完成的目标代码应下载到芯片内部的Flash中运行。
以下分别介绍两种下载方式的配置方法。
1. 下载到内部Flash中运行方法建立工程及添加文件的方法这里不再描述,可以直接拷贝示例工程文件到目标文件目录中,工程文件夹下包括两个子文件夹:Libraries和Project,Libraries文件夹中主要存放了内核配置文件,官方提供的函数库文件及程序的引导代码,Project中包含了建立工程相关文件及主函数相关文件。
要设置调试方法,首先建立一个配置选项,在工程界面选择ProjectàManageàComponents, Environment, Books…选项,显示如图1所示界面:图1 Components, Environment, Books选项在Project Targets选项中新建STM3220G_EV AL_Flash配置选项,右侧的Groups为工程代码中包含的工作组,Files为每个工作组中包含的文件。
IAR建⽴stm32⼯程 stm32是⼀个当下⾮常流⾏的微控制器,很多⼈都加⼊了学习stm32的⾏列中,常⽤的stm32编译器有IAR和mdk两种,接下来是利⽤stm32固件库3.5在IAR下的建⽴的⼯程模板历程: 1、在常⽤的⽂件夹下新建⽴⼀个⽂件夹,根据个⼈喜好,分别建⽴如下⼏个⽂件夹,⽤于分别存放固件库中的⽂件和⽤户⾃⼰的⽂件 2、将固件库E:\STM32\stm32固件库3.5\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\iar⽬录下的汇编⽂件复制到刚刚建好的模板⽬录下F:\STM32-IAR\demo\CMSIS\Startup 3、将固件库E:\STM32\stm32固件库3.5\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x⽬录下的⽂件复制到刚刚建好的模板⽬录下F:\STM32-IAR\demo\CMSIS\System下 4、将固件库E:\STM32\stm32固件库3.5\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver⽬录下的驱动⽂件复制到模板⽬录下F:\STM32-IAR\demo\FWLIB 5、将固件库E:\STM32\stm32固件库3.5\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template\EWARM⽬录下的.icf⽂件复制到模板⽬录F:\STM32-IAR\demo\Config中6、将固件库⽬录E:\STM32\stm32固件库3.5\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template下的F:\STM32-IAR\demo\User下到此为⽌,建⼯程前的准备⼯作已经做好,接下来就是打开IAR进⾏建⽴⼯程了,打开IAR->File->New->Workspace,建⽴好⼯作空间后,选择Project->Create New Project 建⽴⼀个新的⼯程,接下来将⿏标放在界⾯左侧的⼯作空间处点击⿏标右键选择Add,添加⼯作组如下图,⽂件名模板⽂件夹中的名字相同加下来分别将模板⽂件家中的.C⽂件添加进⼯程到此为⽌需要添加的⽂件已全部添加进来了,接下来是对IAR的配置,依旧是将⿏标放在左侧的⼯作空间上点击右键选择Options进⾏配置,在General Options-Target-Device选择⾃⼰使⽤的相应芯⽚型号,General Options下其他选项保持默认即可,接下来是C\C++Compler按下图进⾏设置接下来的⼏项⼀次按接下来的图⽚设置就好接下来是最容易忽视的⼀个问题,图⽚上画圈的位置⼀定要选上,不然编译将出错最后在⼯程中加⼊main函数编译通过,⼀个模板就建好了。
开发工具:JLink V7.0开发环境:IAR5.3第一步:下载函数库从ST官方网站下载STM32 V3.0固件函数库。
第二步:复制库文件将下载的软硬件函数库解压后,将目录中的【Libraries】目录拷贝到您的项目目录中,然后【Project】目录下的【Template】目录下的main.c、stm32f10x_conf.h、stm32f10x_it.c、stm32f10x_it.h四个文件拷贝到您的目录下,然后将【Project】——【Template】——【EWARMv5】目录下的四个加载镜象文件复制到您的止录下。
所以这些完成后您的项目中的文件差不多如下图所示了:第三步:加载文件启动IAR5.3开发环境,选择在当前工作空间建立新项目,将提示工具选择,选择ARM即可;项目模板选择,直接选择空项目即可选择完毕后单击OK按钮,提示项目文件存放位置,直接存到之前新建的项目目录中即可。
然后按下图所示添加各文件组,并将相应的文件添加进去就可以了。
第四步:配置IAR 5.3右击项目文件(比如上图中的MyProject - Debug),选择右击菜单中的【Options】按钮,将出现项目配置选项卡。
选择【General Options】,在【Target】页中选择【Device】,再点击【Device】右侧的器件选择按钮,选择您的STM32芯片。
选择完毕后将如下图所示:选择【C/C++ Compiler】,再选择【Preprocessor】页在【Additional include directories】的文本框中,输入您的项目所需索引的头文件地址,配置完成后,将如下图所示:选择【Linker】,再选择【Config】页,将【Override Default】复选框选中,单击文本框右侧的文件选择按钮,在您的项目根目录中选择您要连接配置的文件(比如您准备将程序在Flash中运行,则选择stm32f10x_flash.icf),配置完成后,将如下图所示:选择【Debugger】,再选择【Setup】页,在【Driver】下拉选择框中选择【J-Link/J-Trace】,配置完成后,将如下图所示:完成以后操作后,点击Make命令按钮,提示保存Workspace file,输入您要保存的名称(比如就上面的项目就取名为MyProject),点击保存后,系统进行编译。
运行环境:编译器:IAR For ARM V6.4Jlink:JlinkV8 +JlinkARM V4.40库版本: CMSIS架构库文件这里值得说一下的是,就我目前使用的情况JlinkArmV4.40的驱动是最好的,后面高版本的更新Jlink后,不是正版的Jlink将会被锁死(JlinkArmV4.44d),,早期版本可能造成找不到jlink.dll的情况第一步:建立工程,增加group和源文件.首先打开IAR Wmbeded Workbench,”Project” ”Creat New Project”建立一个工程,命名选择路径保存建立好工程后,右击Add如下图,预先建立好一些方便管理的Group,然后分类在各个group 里增加源文件.为了看清楚我的工程的文件列表,下面贴两个图大家看看是我建立好的工程的界面工程建立好了之后,将说下自己环境变量的设置:(以下未提到的选项卡,我的设置是保持默认)第二步:设置编译环境,以下大部分只贴图,以下设置只是最简单的,保证工程可以通过,如果需要大家就得自己去查找设置了.按照上图所示进入设置界面,我只说一些我自己的设置,保持默认的就不再叙述了1.General Option选项卡里设置了两个选项卡:Traget 和Library Configuration,其他的保持默认Target 选项卡就不说了,大家一看就明白.至于Lib选项卡,自己根据需要,如果需要用到像printf一类函数的就需要设置成full,否则选none吧。
加库相当于家code了。
大家都懂得.2.C/C++Complier选项卡,我直接说我的配置了,直接看图吧Language1Language2Optimizations,选项卡意思是指优化等级,当使用最高等级的优化方式时,将会在三个选项中选择平衡,代码大小优先,执行速度优先, 不过在要求不严格的条件下,不建议选择优化.OuputPreprocessor这个选项卡就是设施我们包含头文件路径下面解释下头文件的包含问题:$PROJ_DIR$ :表示在工程文件所在目录$PROJ_DIR$\..\F4_StdPeriiph_Driver\inc \... 指从工程文件(.EWP, .EWW文件)所在目录返回上级目录搜索F4_StdPeriph_Driver目录,找到后进入搜素inc文件目录.. 在文件系统中表示返回到上级目录.main文件夹下的文件希望通过上述解释和两个图能让大家了解头文件相对路径的设置.还有一种绝对路径的设置例如:D:\WorkSpace\SoftWare\MyF4\CMSIS\Include绝对路径的缺点就是,当你把工程移动到另外一个盘后或者目录,再编译将产生一大堆找不到头文件的错误。
stm32软件开发流程总结1. 建⽴⼯程模板建相关⽂件夹,添加库⽂件配置系统宏定义和头⽂件包含路径mdk 软件配置2. 配置系统时钟系统时钟是整个系统运⾏的三要素之⼀(还有电源、复位),这⾥主要配置分频系数M、P 倍频系数 N3. 测试系统时钟配置完系统时钟,还要验证⼀下时钟是否是我们所期望的,这⾥提供⼏种⽅法,仅供参考:查看变量 SystmeCoreClock 的值通过硬件仿真查看内部时钟存在偏差,可通过修改校准寄存器的值修正,以下是修正前后从mco时钟输出引脚测得的内部⾼速时钟频率修正前:修正后:4. 配置系统打印调试串⼝嵌⼊式平台由于资源的限制,⼀般没有显⽰设备,所以通常通过串⼝调进⾏调试5. 看门狗在后台主循环⾥加⼊喂狗操作,可防⽌程序死循环,因得不到及时喂狗,导致程序复位在中断⾥加⼊喂狗操作(喂狗间隔时间⼀定要长于主循环⾥的喂狗时间),防⽌中断意外关闭6. RTCRTC可以为系统提供时间信息,定时中断(唤醒)7. GPIO ⼝操作GPIO 操作流程:1)打开外设端⼝时钟RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);2)填充 GPIO_Init_TypeDef 结构体3)调⽤Gpio_Init() 配置端⼝注意:调⽤Gpio_Init() 函数之前必须先打开外设端⼝时钟8. 定时器定时器实现精确定时脉冲计数pwm脉冲9. 中断中断是前后台系统运⾏的关键,可提⾼程序的响应能⼒中断编写注意事项:10. I2CI2C是系统重要的内部总线,⽤于连接mcu和⽚上其他外设,只需2根线即可实现数据通讯11. SPISPI是⾼速的内部总线12. 搭建系统框架裸机程序规模增⼤之后,如果不搭建⼀个合适的系统框架,系统维护和扩展将会是⼀件棘⼿的⼯作,常见的系统框架如下:1)时间⽚轮询系统2)基于消息轮询的系统3)转态机13. ⾯向对象的思想编程⽤结构体实现封装结构体成员变量表⽰属性结构体函数指针成员变量表⽰⽅法14. ⾯向接⼝的编程⾯向接⼝的编程有如下优点:⾼内聚,低耦合提⾼系统的可扩展性和可维护性为实现分层提供了有⼒的保障。
stm32开发流程STM32开发流程。
STM32是一款广泛应用于嵌入式系统的32位微控制器,它具有丰富的外设和强大的性能,因此在各种领域都有着广泛的应用。
在进行STM32开发时,我们需要按照一定的流程来进行,下面将介绍一下STM32开发的基本流程。
第一步,准备开发环境。
在进行STM32开发之前,我们需要准备好相应的开发环境,包括开发板、编译器、调试工具等。
常用的开发板包括ST官方的Discovery系列和Nucleo系列,编译器可以选择Keil、IAR等,调试工具可以选择ST-LINK、J-Link等。
在选择开发环境时,需要考虑到项目的实际需求和自身的熟悉程度,选择合适的工具能够提高开发效率。
第二步,创建工程。
在选择好开发环境之后,我们需要创建一个新的工程来进行开发。
在Keil中,可以通过File->New来创建一个新的工程,然后选择对应的芯片型号。
在创建工程的过程中,需要设置好工程的名称、存储路径等信息,确保工程能够被正确地保存和管理。
第三步,编写代码。
在创建好工程之后,我们就可以开始编写代码了。
在进行STM32开发时,通常会使用C语言来编写程序。
我们可以根据项目的需求,编写相应的初始化代码、驱动代码和应用代码,实现相应的功能。
在编写代码的过程中,需要注重代码的可读性和可维护性,合理地组织代码结构,添加必要的注释,以便后续的调试和维护工作。
第四步,编译和下载。
在完成代码编写之后,我们需要进行编译和下载的工作。
在Keil中,可以通过Build->Build Project来进行编译,编译成功之后会生成相应的hex文件。
然后,我们可以通过调试工具将hex文件下载到目标板上进行调试。
在下载过程中,需要注意选择合适的下载方式和参数,确保程序能够正确地下载到目标板上并运行。
第五步,调试和测试。
在程序下载到目标板之后,我们需要进行相应的调试和测试工作。
通过调试工具,我们可以对程序进行单步调试、断点调试等操作,定位和解决程序中的问题。