stm32+IAR配置与固件使用.doc_第1页
stm32+IAR配置与固件使用.doc_第2页
stm32+IAR配置与固件使用.doc_第3页
stm32+IAR配置与固件使用.doc_第4页
stm32+IAR配置与固件使用.doc_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

If an error, please contact author, to be corrected.For other uses, indicate the source, to express my recognition of the results.Thank you.一、序言:1.1 说明本文逐步介绍了作者自身在STM32处理器和IAR编译环境的学习过程,并介绍了在该类环境下容易产生错误的地方,最后顺利的进行Firmware下的程序编写和ST-LINK的调试。说来惭愧,小小的编译环境竟然花费了我整整4天时间,本人也是跟随着网上的众多教程慢慢的摸索。可不想,编写教程的人貌似并没有遇到很多问题,而自己确因为人品的关系很是出错。现将熟悉过程记录之,供人品和我一样差的,甚至比我差的同胞使用。以下,仅仅是作者自身的实践所得。如有出错,请谅解,并提出意见;如需要引用,还请注明来源,以此表示对我成果的肯定。谢谢。1.2 选择STM32单片机/处理器在公司完成一个项目之后,需要考虑新的芯片适应新的需求,以此,同主管商量之后,决定采用ST的8位或32位单片机。其价格、功能、用户群都是比较不错的。介于自身对32位芯片的向往,于是义不容辞的直接上STM32单片机。公司正好有一块STM32的板子,于是决定从STM32F103C8开始。1.3 熟悉STM32的编程手法不同于以往的8位或16位单片机,STM32的编程大量使用Firmware,也就是固件,个人理解是:Firmware不需要或者很少修改之后,可以随意的调用,即可以实现相关功能。Firmware的设计结构预示着它具有很好的通用型,而且熟悉之后调用非常的简单。最大的困难在于当初次接触Firmware时,可能有点晕,于是本人花费了整整4天时间初步搞定了如何使用Firmware,以及使用开发板进行下载调试。1.4 平台选择A、开发板、仿真器:使用的是STM32F103C8-PKT+ST-LINK;B、开发环境:IAR Embedded Workbench for ARM, 32K Kick start Edition;C、Firmware:STM32F10x_StdPeriph_Lib_V3.4.0首先安装IAR Embedded Workbench for ARM, 32K Kick start Edition;下载STM32F10x_StdPeriph_Lib_V3.4.0;(所有的资源都可以到IAR和ST官网上下载,资源的获取也是很重要的,要是自己不培养找资源的功夫,就不是一个好的开发人员,这里就不留网址了)二、准备工作2.1 了解IAR for ARM编译环境和很多其他的编译环境一样,IAR for ARM也分为创建项目,添加文件,编译,连接,调试等相关流程。对IAR for ARM操作的重点在于对IAR环境的配置,将在后面详细介绍。(不像Keil编写51单片机一样,只需要配置out有hex输出既可)2.2 了解Firmware-STM32F10x_StdPeriph_Lib_V3.4.0只有对Firmware有整体性的认识之后,你才能使用它,不至于很模糊。以此初学者一定要对Firmware有一个整体性的认识。2.3 了解ST-LINK这里的ST-LINK是正宗的ST公司设计的,不是ST-LINKII,更不是III;IAR for ARM中已经提供了对ST-LINK的支持,以此很容易就可以使用ST-LINK进行配置。三、开始工作和很多教程一样,使用项目知道的方法,在实际的操作中来加深对该环境下的操作方法。环境为:STM32F103C8-PKT+ST-LINKIAR Embedded Workbench for ARM, 32K Kick start EditionSTM32F10x_StdPeriph_Lib_V3.4.03.1 创建文件目录创建一个文件夹20101223,在下面在创建一个EWARM文件夹:20101223文件夹是你的整个项目的文件夹;EWARM文件夹是项目中的放置工程文件夹;3.2 创建一个工程目录创建一个Workspace,一个Project,添加Add Group:最后IAR for ARM中的结构如下:其中CMSIS:Cortex Microcontroller Software interface standardStdPeriph_Driver:Standard Peripheral Driver这是你的代码结构,主要是模仿Firmware中的Template,应该是最清晰的结构了。文件组织结构如下:只要按照以上的建立方式,既可以进入下一阶段。3.3 添加Firmware相关文件该过程主要是Copy和Add两个过程。3.3.1 CopyA、Copy Firmware下的整个Libraries文件夹到20101223文件夹下B、 Copy Firmware中的main.c、stm32f10x_conf.h、stm32f10x_it.c、stm32f10x_it.h 、system_stm32f10x.c如图:到20101223文件夹下,如图:C、 Copy 各类.ICF文件stm32f10x_flash.icfstm32f10x_flash_extsram.icfstm32f10x_nor.icfstm32f10x_ram.icf如图:到EWARM(即放置工程文件的文件夹下),如图:至此,所有的拷贝工作都已经完成,进入Add调整阶段。3.3.2 Add以最简单的GPIO端口操作为目的,开始Add相关文件。添加之后的结果为:其中:core_cm3.c是内核文件(没深入研究);system_stm32f10x.c是系统相关文件(没深入研究);misc.c是一个辅助文件;stm32f10x_gpio.c是gpio的驱动文件;stm32f10x_rcc.c是复位与时钟控制器驱动文件;main.c是主程序的入口函数,是整个系统的一个主框架;stm32f10x_it.c是系统的所有的中断函数文件;至此,所有的Copy和Add操作都已经完成,接下来是Modify。3.4 开始编译和调试3.4.1 Compile with Modify首先修改main.c修改main.c使之成为一个按照你的想法完成任务的系统功能。最简单的任务就是:让一个LED一亮一灭;流程图如下:源代码如下:/* Includes -*/#include stm32f10x.h/* Private function prototypes -*/void RCC_Configuration(void);void GPIO_Configuration(void);typedef enum LED1 = 0, LED2, LED3, LED4,LED_STATE;LED_STATE led_status;int main(void) u32 cnt = 0x000fffff; /* System Clocks Configuration */ RCC_Configuration(); /* Configure the GPIO ports */ GPIO_Configuration(); led_status = LED1; while (1) switch (led_status) case LED1: GPIOB-BSRR = 0x1000E000; /* turn on LD1 */ led_status = LED2; break; case LED2: GPIOB-BSRR = 0x2000D000; /* turn on LD2 */ led_status = LED3; break; case LED3: GPIOB-BSRR = 0x4000B000; /* turn on LD3 */ led_status = LED4; break; case LED4: GPIOB-BSRR = 0x80007000; /* turn on LD4 */ led_status = LED1; break; while(cnt-); cnt = 0x000fffff; /* * brief Configures the different system clocks. * param None * retval : None */void RCC_Configuration(void) /* Setup the microcontroller system. Initialize the Embedded Flash Interface, initialize the PLL and update the SystemFrequency variable. */ SystemInit(); /* GPIOA clock enable */ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);/* * brief Configure the GPIOD Pins. * param None * retval : None */void GPIO_Configuration(void) GPIO_InitTypeDef GPIO_InitStructure; /* GPIOB configuration: PB12 PB13 PB14 PB15 as led controller */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14| GPIO_Pin_15; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; GPIO_Init(GPIOB, &GPIO_InitStructure);Compile发现问题如下:通过调整头文件路径解决:右击ProjectoptionC/C+CompilePreprocessor:在Additional include directories中加入如下语句:$PROJ_DIR$.$PROJ_DIR$.LibrariesCMSISCM3CoreSupport$PROJ_DIR$.LibrariesCMSISCM3DeviceSupportSTSTM32F10x$PROJ_DIR$.LibrariesSTM32F10x_StdPeriph_Driverinc如图:Compile:您有可能会出现以下问题:这是需要修改stm32f10x.h文件中的相关,因为你没有为你的芯片选择类型,点击错误,即打开了stm32f10x.h头文件,如图:只需要选择您的期间类型就好,比如:再Compile,这下错误出现的吓人,镇定发现,我们没有选择device type:右击ProjectoptionGeneral OptionsTarget:选择好正确的芯片类型,如图:Compile,出现:分析好像没有将一些头文件包括进来,依然修改stm32f10x.h(注意:所有设备相关的头文件都是由stm32f10x.h控制的),找到如下图:将其改成:Compile:貌似ok了。至此,程序基本上没有问题,之后进行调试,测试功能相关。3.4.2 Debug and Modify选择调试工具:ST-LINK;选择调试方式:arm或者flash;选择烧写配置文件:stm32f10x_flash.icf;我们暂时使用ST-LINK进行flash的调试,这样,调试结束后,程序已经烧写到芯片内部,可以成为一个真正的系统了。至此所有的调试准备工作都已经就绪;连接设备:包括ST-LINK和电源线:点击,会出现

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论