版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第3章STM32微控制器的
开发平台本章讲述了STM32微控制器的开发平台,包括KeilMDK5安装配置、KeilMDK下新工程的创建、J-Link驱动安装、KeilMDK5调试方法、J-Scope安装、J-Scope调试方法、Cortex-M3微控制器软件接口标准CMSIS、STM32F103开发板的选择和STM32下载器的选择。3.1KeilMDK5安装配置Keil公司是一家业界领先的微控制器(MCU)软件开发工具的独立供应商,由两家私人公司联合运营,分别是德国慕尼黑的Keil
ElektronikGmbH和美国德克萨斯的KeilSoftwareInc。Keil公司制造和销售种类广泛的开发工具,包括ANSIC编译器、宏汇编程序、调试器、连接器、库管理器、固件和实时操作系统核心(real-timekernel)。MDK即RealViewMDK或MDK-ARM(MicrocontrollerDevelopmentkit),是ARM公司收购Keil公司以后,基于μVision界面推出的针对ARM7、ARM9、Cortex-M系列、Cortex-R4等ARM处理器的嵌入式软件开发工具。3.1.1Keil
简介MDK-ARM主要包含以下四个核心组成部分:1)μVisionIDE:是一个集项目管理器、源代码编辑器、调试器于一体的强大集成开发环境。2)RVCT:ARM公司提供的编译工具链,包含编译器、汇编器、链接器和相关工具。3)RL-ARM:实时库,可将其作为工程的库来使用。4)ULINK/JLINKUSB-JTAG仿真器:用于连接目标系统的调试接口(JTAG或SWD方式),帮助用户在目标硬件上调试程序。μVisionIDE是一个基于Windows操作系统的嵌入式软件开发平台,集编译器、调试器、项目管理器和一些Make工具于一体。具有如下主要特征:1)项目管理器,用于产生和维护项目。2)处理器数据库,集成了一个能自动配置选项的工具。3)带有用于汇编、编译和链接的Make工具。4)全功能的源码编辑器。5)模板编辑器,可用于在源码中插入通用文本序列和头部块。6)源码浏览器,用于快速寻找、定位和分析应用程序中的代码和数据。7)函数浏览器,用于在程序中对函数进行快速导航。8)函数略图(FunctionOutlining),可形成某个源文件的函数视图。9)带有一些内置工具,例如“FindinFiles”等。10)集模拟调试和目标硬件调试于一体。11)配置向导,可实现图形化的快速生成启动文件和配置文件。12)可与多种第三方工具和软件版本控制系统接口。13)带有Flash编程工具对话窗口。14)丰富的工具设置对话窗口。15)完善的在线帮助和用户指南。使用MDK-ARM作为嵌入式开发工具,其开发的流程与其他开发工具基本一样,一般可以分以下几步:1)新建一个工程,从处理器库中选择目标芯片。2)自动生成启动文件或使用芯片厂商提供的基于CMSIS标准的启动文件及固件库。3)配置编译器环境。4)用C语言或汇编语言编写源文件。5)编译目标应用程序。6)修改源程序中的错误。7)调试应用程序。KeilMDK主要能够为开发者提供以下开发优势。(1)启动代码生成向导。启动代码和系统硬件结合紧密。只有使用汇编语言才能编写,因此成为许多开发者难以跨越的门槛。KeilMDK的μVision5工具可以自动生成完善的启动代码,并提供图形化的窗口,方便修改。无论是对于初学者还是对于有经验的开发者而言。都能大大节省开发时间,提高系统设计效率。(2)设备模拟器。KeilMDK的设备模拟器可以仿真整个目标硬件,如快速指令集仿真、外部信号和I/O端口仿真、中断过程仿真、片内外围设备仿真等。这使开发者在没有硬件的情况下也能进行完整的软件设计开发与调试工作,软硬件开发可以同步进行,大大缩短了开发周期。(3)性能分析器。KeilMDK的性能分析器可辅助开发者查看代码覆盖情况、程序运行时间、函数调用次数等高端控制功能,帮助开发者轻松地进行代码优化,提高嵌入式系统设计开发的质量。(4)RealView编译器。KeilMDK的RealView编译器与ARM公司以前的工具包ADS相比,其代码尺寸比ADS1.2编译器的代码尺对小10%,其代码性能也比ADS1.2编译器的代码性能提高了至少20%。(5)ULINK2/Pro仿真器和FLASH编程模块。KeilMDK无须寻求第三方编程软硬件的支持。通过配套的ULINK2仿真器与FLASH编程工具,可以轻松地实现CPU片内FLASH和外扩FLASH烧写。并支持用户自行添加PLASH编程算法,而且支持FLASH的整片删除、扇区删除、编程前自动删除和编程后自动校验等功能。(6)Cortex系列内核。Cortex系列内核具备高性能和低成本等优点。是ARM公司最新推出的微控制器内核,是单片机应用的热点和主流。而KeilMDK是第一款支持Cortex系列内核开发的开发工具。并为开发者提供了完善的工具集,因此,可以用它设计与开发基于Cortex-M3内核的STM32嵌入式系统。(7)提供专业的本地化技术支持和服务。KeilMDK的国内用户可以享受专业的本地化技术支持和服务,如电话、E-mail、论坛和中文技术文档等,这将为开发者设计出更有竞争力的产品提供更多的助力。此外,KeilMDK还具有自己的实时操作系统(RTOS),即RTX。传统的8位或16位单片机往往不适合使用实时操作系统,但Cortex-M3内核除了为用户提供更强劲的性能、更高的性价比。还具备对小型操作系统的良好支持,因此在设计和开发STM32嵌人式系统时,开发者可以在KeilMDK上使用RTOS。使用RTOS可以为工程组织提供良好的结构,并提高代码的重复使用率,使程序调试更加容易、项目管理更加简单。官方下载地址:/mdk5。1.打开官方网站,点击下载MDKMDK下载界面如图3-1所示。3.1.2Keil下载图3-1MDK下载界面2.按照要求填写信息,并点击Submit信息填写界面如图3-2所示。图3-2信息填写界面3.点击MDKxxx.exe下载MDKxxx.exe下载界面如图3-3所示。这里下载的是MDK536.exe,等待下载完成。图3-3MDKxxx.exe下载界面1.双击安装文件双击MDK安装文件,MDK图标如图3-4所示。3.1.3MDK安装图3-4MDK图标2.MDK安装过程安装界面如图3-5所示。图3-5MDK安装界面欢迎界面点下一步;勾选“同意协议”,点下一步;选择安装路径,建议默认,点下一步;填写用户信息,点下一步;等待安装。MDK安装进程如图3-6所示。图3-6MDK安装进程需要显示版本信息,点击Finish,完成安装。安装完成后,弹出PackInstaller欢迎界面。先关闭,破解后再安装Pack包。MDK安装成功后,桌面会有KeilμVision5的图标(以下简称Keil5),如图3-7所示。图3-7KeilμVision5的图标如果购买了正版的KeilμVision5,以管理员身份运行KeilμVision5,打开后点击File-LicenseManagement,安装License,如图3-8所示。至此就可以使用KeilμVision5了。图3-8安装License界面如果没有购买正版的KeilμVision5,使用就会受到限制。公司要购买正版的KeilμVision5软件,若用于教学,可以对KeilμVision5进行破解。若破解成功,则出现如图3-9所示界面。图3-9KeilμVision5破解成功界面此时,如果License区SupportPeriod时间晚于当前时间,表示破解成功。如果SupportPeriod时间早于当前时间,破解失败会显示红色,如图3-10所示。重新生成破解代码即可(可能需要尝试多次才能找到合适的破解文件)。图3-10KeilμVision5破解不成功界面破解成功后的版本为Plus版,不破解为Lite版。KeilμVision5功能限制如表3-1所示。表3-1KeilμVision5功能限制步骤1:回到Keil5界面,点击图3-11中圈内的PackInstaller按钮。3.1.4安装库文件图3-11PackInstaller按钮工具栏步骤2:将弹出之前关闭的PackInstaller窗口,如图3-12所示。图3-12PackInstaller窗口步骤3:左侧窗口选择所使用的芯片STM32F107系列,右侧点击DeviceSpecific->Keil::STM32F4xx_DFP处的Install按钮安装库文件,下方output区可看到库文件的下载进度。步骤4:等待库文件下载完成。Keil::STM32F1xx_DFP处Action状态变为Uptodate,表示该库下载完成。打开一个工程,测试编译是否成功。3.2KeilMDK下新工程的创建建立文件夹GPIO_TEST,来存放整个工程项目。在GPIO_TEST工程目录下,建立四个文件夹来存放不同类别的文件,工程目录如图3-13所示。图中4个文件夹存放文件类型如下:lib:存放库文件;obj:存放工程文件;out:存放编译输出文件;user:存放用户源代码文件。3.2.1建立文件夹图3-13工程目录创建一个新工程,对STM32的GPIO功能进行简单的测试。打开KeiluVision后,将显示上一次使用的工程,如图3-14所示。3.2.2打开KeiluVision图3-14打开KeilμVision选择菜单Project-->NewuVisionProject,如图3-15所示。3.2.3新建工程图3-15新建工程把该工程存放在刚刚建立的obj子文件夹下,并输入工程文件名称,如图3-16和3-17所示。图3-16选择工程文件存放目录图3-17工程文件命名点击保存后弹出选择器件窗口,如图3-18所示。选择STMicroelectronics下STM32F103VB器件(选择使用器件型号)。图3-18芯片型号选择点击OK后弹出界面如图3-19所示,在该界面中选择“是”,以加载STM32的启动代码。图3-19加载启动代码至此工程建立成功,显示画面如图3-20所示。图3-20工程建立成功画面3.3J-Link驱动安装J-LINK是SEGGER公司为支持仿真ARM内核芯片推出的JTAG仿真器。它与众多诸如IAREWAR、ADS、KEIL、WINARM、RealView
等集成开发环境配合,可支持所有ARM7/ARM9/ARM11、CortexM0/M1/M3/M4,CortexA5/A8/A9等内核芯片的仿真。它与IAR,KEIL等编译环境可无缝连接,因此操作方便、连接方便、简单易学,是学习开发ARM最好、最实用的开发工具。J-LINK具有J-LinkPlus,J-LinkUltra,J-LinkUltra+,J-LinkPro,J-LinkEDU,J-Trace等多个版本,可以根据不同的需求选择不同的产品。3.3.1J-Link简介安装J-Link驱动,以便Keil5、J-Scope能够使用J-Link。J-LINK主要用于在线调试,它集程序下载器和控制器为一体,使得PC上的集成开发软件能够对ARM的运行进行控制,比如,单步运行,设置断点,查看寄存器等。一般调试信息用串口“打印”出来,就如VC用printf在屏幕上显示信息一样,通过串口ARM就可以将需要的信息输出到计算机的串口界面。由于笔记本一般都没有串口,所以常用USB转串口电缆或转接头实现。官方下载地址:/downloads/J-Link/。J-Link驱动下载界面如图3-21所示。3.3.2J-Link驱动安装图3-21J-Link驱动下载界面下载后得到J-Link驱动的图标,如图3-22所示。图3-22J-Link驱动的图标1.J-Link安装J-Link安装步骤简单,默认配置即可。J-Link驱动安装过程如图3-23所示。图3-23J-Link驱动安装过程2.打开Keil5的OptionsforTarget按钮安装完成后,连接J-Link到电脑,打开Keil5的OptionsforTarget按钮。3.调试工具选择切换到Debug选项卡,调试工具选择J-LINK/J-TRACECortex,如图3-24所示。打开Settings。可以看到J-Link的SN、版本等信息,表示J-Link驱动安装成功,当前J-Link可正常使用。图3-24OptionsforTarget按钮界面3.4KeilMDK5调试方法进入调试模式步骤如下:1)连接J-Link到呼吸机主板STM32调试口,此时J-LinkUSB线不要连接计算机。2)开发板上电。3)连接J-LinkUSB线到计算机,J-Link指示灯应为绿色。4)使用Keil5打开一个程序。5)进入调试模式。进入调试模式界面如图3-25所示。3.4.1进入调试模式图3-25进入调试模式界面3.4KeilMDK5调试方法进入调试模式步骤如下:1)连接J-Link到呼吸机主板STM32调试口,此时J-LinkUSB线不要连接计算机。2)开发板上电。3)连接J-LinkUSB线到计算机,J-Link指示灯应为绿色。4)使用Keil5打开一个程序。5)进入调试模式。进入调试模式界面如图3-25所示。3.4.1进入调试模式图3-25进入调试模式界面3.4.2调试界面介绍1.黄色箭头处为当前执行语句执行语句界面如图3-26所示。图3-26中的圈内为执行语句。图3-26执行语句界面2.
拖动各窗口,调整成习惯的布局。调试界面布局如图3-27所示。图3-27调试界面布局保存当前布局,下次进入调试模式不必重新设置,调试时主要使用Debug菜单和工具栏。Debug菜单和工具栏分别如图3-28和图3-29所示。图3-28Debug菜单图3-29Debug工具栏Debug菜单命令介绍如下:1)Start/StopDebugSesion:开始/停止调试2)ResetCPU:复位CPU3)Run:全速运行4)Stop:停止运行5)Step:单步调试(进入函数)6)StepOver:逐步调试(跳过函数)7)StepOut:跳出调试(跳出函数)8)RuntoCursorLine:运行到光标处9)ShowNextStatemt:显示正在执行的代码行10)Breakpoints:查看工程中所有的断点11)Insert/RemoveBreakpoint:插入/移除断点12)Enable/DisableBreakpoint:使能/失能断点13)DisableAllBreakpoint:失能所有断点14)KillAllBreakpoint:取消所有断点15)OSSupport:系统支持(打开子菜单访问事件查看器和RTX任务和系统信息)16)ExecutionProfiling:执行分析17)MemoryMap:内存映射18)InlineAssembly:内联汇编19)FunctionEditor:函数编辑器20)DebugSetting:调试设置3.4.3变量查询功能方法1:双击选中变量,如hot_reset_times,拖动到Watch区,即可查看该变量的值。变量查询方法1界面如图3-30所示。图3-30变量查询方法1界面方法2:可在Watch区直接输入要查询的变量。变量查询方法2界面如图3-31所示。图3-31变量查询方法2界面3.4.4断点功能当需要程序执行到某处停下时,可以使用断点功能。举例如下:1)确定添加断点处代码为: GetSNdisplay(SN_display);添加断点如图3-32所示。图3-32添加断点2)单击代码左侧阴影处(阴影表示程序可以执行到此处,无阴影一般为未编译或注释语句,不可设置断点),可以设置或取消该语句的断点。添加断点成功后会有一个红色圆点,如图3-33所示。图3-33添加断点成功3)全速运行程序,操作某一设备,进入“信息->关于本机”菜单。此时程序会运行至断点设置处,黄色运行指示箭头指向断点语句。如图3-34所示。图3-34指向断点语句的界面4)可根据调试需求,使用如下调试方法:(1)Step:单步调试(进入函数)(2)StepOver:逐步调试(跳过函数)(3)StepOut:跳出调试(跳出函数)(4)RuntoCursorLine:运行到光标处此处以执行“Step单步调试”命令为例,进入GetSNdisplay函数,如图3-35所示。图3-35Step单步调试命令Step单步调试程序界面如图3-36所示。图3-36Step单步调试程序界面5)调试完成后,可进入全速运行模式。全速运行模式时可正常操作所开发设备及监视变量。如图3-37所示。图3-37全速运行命令3.4.5结束调试模式结束调试模式,执行Start/StopDebugSession命令,如图3-38所示。图3-38结束调试模式3.5J-Scope安装J-Scope是SEGGER公司推出的,可在目标MCU运行时实时分析数据并图形化显示的软件。J-Scope读取elf或axf文件,并允许选择多个变量进行可视化显示。J-Scope主要有RTT和HSS两种工作模式。RTT模式:需要用户在MCU上添加代码,有点类似串口上传数据,因为有额外的代码,所以需要占用MCU的资源。优点是速度快,缺点是需要额外的代码。HSS模式:不需要用户在MCU上添加任何代码,只需要使用J_Scope加载MDK或IAR的可执行文件即可,而且可以随时连接MCU,不影响MCU的正常功能,不需要额外的资源。使用标准SWD接口即可。优点是不需要添加代码,缺点是速度较慢,一般为1KHz。当前调试均使用HSS模式。3.5.1J-Scope简介HSS模式支持的内核如图3-39所示。图3-39HSS模式支持的内核3.5.2J-Scope安装官方地址:/products/debug-probes/j-link/tools/j-scope/。官方地址已找不到下载入口,可在浏览器直接检索setup_jscope_v611m。当前可用地址如下:/forum.php?mod=viewthread&tid=86881。J-Scope安装步骤简单,默认配置即可。安装过程如下。双击图3-40所示的J-Scope图标,开始安装,如图3-41所示,安装路径选择默认。图3-40J-Scope图标图3-41J-Scope安装界面J-Scope安装完成后,出现如图3-42所示界面。图3-42J-Scope安装完成界面勾选RunSEGGER–J-ScopeV6.11m后,会弹出如图3-43所示的J-Scope演示界面。图3-43J-Scope演示界面3.6J-Scope调试方法1)从桌面或开始菜单找到J-Scope快捷方式,如图3-44所示,双击J-Scope图标,打开J-Scope。2)此时会弹出J-Scope新建工程菜单,可先关闭或开始新建工程。J-Scope新建工程菜单如图3-45所示。3.6.1打开J-Scope图3-44J-Scope图标图3-45J-Scope新建工程菜单3.6.2J-Scope功能区介绍1.J-Scope的File菜单File菜单及功能如图3-46所示。2.J-Scope的工具栏J-Scope的工具栏如图3-47所示。图3-46File菜单及功能图3-47J-Scope的工具栏J-Scope工具栏的命令介绍如下:1)
OpenProjectSettings:打开工程配置对话框。2)
ToggleGraphWindow:关闭图形窗口,不常用。3)
ToggleWatchWindow:关闭变量观察窗口,不常用。4)
Start/ResumeSampling:启动/重启采样(调试模式)。5)
StopSampling:停止采样。6)PauseSampling:暂停采样。7)ZoomIn/Out:放大/缩小图形。8)TriggerRising/Falling/BothEdge:上升/下降/双沿触发,未使用。9)
Start/Stop/ResetTarget:启动/暂停/复位目标,未使用。3.变量窗口右键菜单变量窗口右键菜单如图3-48所示。图3-48变量窗口右键菜单4.图形和变量窗口图形和变量窗口如图3-49所示。图3-49图形和变量窗口3.6.3新建工程1)在File菜单执行新建工程命令,如图3-50所示。图3-50新建工程命令或者在刚开始打开J-Scope时,弹出的新建工程菜单选择OK。新建工程界面如图3-51所示。图3-51新建工程界面
2)进入工程配置界面。以下设置默认即可:连接方式USB,不指定脚本,SWD接口4000kHz,采样方式HSS,采样间隔100us。如图3-52所示。图3-52工程配置界面3)进入目标设备设置界面。需要设置目标设备和Elf文件。J-ScopeConfiguration界面如图3-53所示。图3-53J-ScopeConfiguration界面4)Device处输入STM32F407,选中STM32F407ZE,选OK确认,如图3-54所示。这里选择的目标设备是以STM32F407为核心的呼吸机,所以Device选择STM32F407ZE。若目标设备使用的是STM32F103ZE,Device选择STM32F103ZE。图3-54目标设备设置界面5)进入Elf文件选择界面,选择STM32主程序生成的elf或axf文件,如图3-55所示。图3-55选择axf文件界面6)配置完成后,界面如图3-56所示。图3-56J-Scope配置完成界面7)点击OK,会进入变量添加界面。3.6.4添加变量1)新建工程完成后会进入变量添加界面,也可在变量区空白处右键弹出AddSymbols菜单,如图3-57所示。图3-57AddSymbols菜单2)添加变量界面,可以拖动滚动条选择变量,也可通过下方FilterSymbolsbyname处输入变量名称筛选,如图3-58所示。图3-58J-ScopeSymbol选择界面3)添加数组变量时,需先在AddSymbol框中输入要查看数组的索引,然后点击变量名,下方会出现数组索引成员,选中即可,如图3-59所示。图3-59添加数组变量4)单个J-Scope工程能添加的变量总数与J-Link型号有关。当前使用的J-Link最多支持10个变量。超过10个会无法进入调试状态。如果监测的变量超过10个,可以通过同时运行多个工程实现。鼠标指向要删除的变量,右键弹出菜单“RemoveSymbol”或键盘按Delete键,即可删除变量。3.6.5保存工程添加/删除变量、修改工程配置、修改视图设置等操作后,J-Scope左上角工程名处会有*示意,如图3-60所示。点击File菜单中SaveProject按钮,保存工程,如图3-61所示。图3-60工程有变动界面图3-61保存工程3.6.6进入调试模式1)连接J-Link到呼吸机主板STM32调试口,此时J-LinkUSB线不要连接电脑。2)呼吸机主板上电。3)连接J-LinkUSB线到电脑,J-Link指示灯应为绿色。4)点击启动按钮,如图3-62所示。然后进入J-Scope调试模式,如图3-63所示。图3-62启动/停止工具栏图3-63J-Scope调试模式调试模式可看到变量实时波形和变量值,但调试模式不可以添加、删除变量。3.6.8停止调试点击工具栏可以停止调试模式,如图3-64所示。图3-64停止调试模式3.6.9查看存储的变量在图形和变量区可看到存储的变量,如图3-65所示。图3-65在图形和变量区可看到存储的变量需要注意的是导入数据时的J-Scope工程、加载的axf文件要与存储时的工程和axf文件保持一致,否则可能导致数据加载混乱。3.7Cortex-M3微控制器软件接口标准CMSIS目前,软件开发已经是嵌入式系统行业公认的主要开发成本,通过将所有Cortex-M芯片供应商产品的软件接口标准化,能有效降低这一成本,尤其是进行新产品开发或者将现有项目或软件移植到基于不同厂商MCU的产品时。为此,2008年ARM公司发布了ARMCortex单片机软件接口标准(CortexMicrocontrollerSoftwareIntrfaceStandard,CMSIS)。ST公司为开发者提供了标准外设库,通过使用该标准库无需深入掌握细节便可开发每一个外设,减少了用户编程时间,从而降低开发成本。同时,标准库也是学习者深入学习STM32原理的重要参考工具。3.7.1CMSIS介绍CMSIS软件架构由4层构成:用户应用层、操作系统及中间件接口层、CMSIS层和硬件层,如图3-66所示。图3-66CMSIS软件架构其中,CMSIS层起着承上启下的作用:一方面对硬件寄存器层进行统一实现,屏蔽不同厂商对Cortex-M系列微处理器核内外设寄存器的不同定义;另一方面又向上层的操作系统及中间件接口层和用户应用层提供接口,简化应用程序开发,使开发人员能够在完全透明的情况下进行应用程序开发。CMSIS层主要由以下3部分组成。1)核内外设访问层CPAL(CorePeripheralAccessLayer):由ARM公司实现,包括了命名定义、地址定义、存取内核寄存器和外围设备的协助函数,同时定义了一个与设备无关的RTOS内核接口函数。2)中间件访问层MWAL(MiddlewareAccessLayer):由ARM公司实现,芯片厂商提供更新,主要负责定义中间件访问的应用程序编程接口API(ApplicationProgrammingInter-face)函数,如TCP/IP协议栈、SD/MMC、USB等协议。3)设备外设访问层DPAL(DevicePeripheralAccessLayer):由芯片厂商实现,负责对硬件寄存器地址及外设接口进行定义。另外,芯片厂商会对异常向量进行扩展,以处理相应异常。3.7.2STM32F10x标准外设库STM32标准函数库也称为固件库,它是ST公司为嵌入式系统开发者访问STM32底层硬件而提供的一个中间函数接口,即API(ApplicationProgramInterface),由程序、数据结构和宏组成,还包括微控制器所有外设的性能特征、驱动描述和应用实例。在STM32标准函数库中,每个外设驱动都由一组函数组成,这组函数覆盖了外设驱动的所有功能。可以将STM32标准函数库中的函数视为对寄存器复杂配置过程高度封装后所形成的函数接口,通过调用这些函数接口即可实现对STM32寄存器的配置,从而达到控制的目的。STM32标准函数库覆盖了从GPIO端口到定时器,再到CAN、PC、SPI、UART和ADC等所有的标准外设,对应的函数源代码只使用了基本的C编程知识,非常易于理解和使用,并且方便进行二次开发和应用。实际上,STM32标准函数库中的函数只是建立在寄存器与应用程序之间的程序代码,向下对相关的寄存器进行配置,向上为应用程序提供配置寄存器的标准函数接口。STM32标准函数库的函数构建已由ST公司完成,这里不再详述。在使用库函数开发应用程序时,只要调用相应的函数接口即可实现对寄存器的配置,不需要探求底层硬件细节即可灵活规范地使用每个外设。STM32F10x标准外设库包括微控制器所有外设的性能特征,而且包括每一个外设的驱动描述和应用实例。通过使用该固件函数库无需深入掌握细节便可开发每一个外设,减少了用户编程时间,从而降低开发成本。每一个外设驱动都由一组函数组成,这组函数覆盖了该外设的所有功能,每个器件的开发都由一个通用API驱动,API对该程序的结构、函数和参数名都进行了标准化。因此,对于多数应用程序来说,用户可以直接使用。对于那些在代码大小和执行速度方面有严格要求的应用程序,可以参考固件库,根据实际情况进行调整。因此,在掌握了微控制器细节之后结合标准外设库进行开发将达到事半功倍的效果。系统相关的源程序文件和头文件都以“stm32f10x_”开头,如stm32f10x.h。外设函数的命名以该外设的缩写加下划线开头,下划线用以分隔外设缩写和函数名,函数名的每个单词的第一个字母大写,如GPIO_ReadInputDataBit。1.Libraries文件夹下的标准库的源代码及启动文件Libraries文件夹由CMSIS和STM32F10x_StdPeriph_Driver组成,如图3-67所示。图3-67Libraries文件结构1)core_cm3.c和core_cm3.h分别是核内外设访问层(CPAL)的源文件和头文件,作用是为采用Cortex-M3内核的芯片外设提供进入M3内核的接口。这两个文件对其他公司的M3系列芯片也是相同的。2)stm32f10x.h是设备外设访问层(DPAL)的头文件,包含了STM32F10x全图3-2STM32的3.5版标准外设库文件结构系列所有外设寄存器的定义(寄存器的基地址和布局)、位定义、中断向量表、存储空间的地址映射等。3)system_stm32f10x.c和system_stm32f10x.h分别是设备外设访问层(DPAL)的源文件和头文件,包含了两个函数和一个全局变量。函数SystemInit()用来初始化系统时钟(系统时钟源、PLL倍频因子、AHB/APBx的预分频及其Flash),启动文件在完成复位后跳转到main()函数之前调用该函数。函数SystemCoreClockUpdate()用来更新系统时钟,当系统内核时钟变化后必须执行该函数进行更新。全局变量SystemCoreClock包含了内核时钟(HCLK),方便用户在程序中设置SysTick定时器和其他参数。4)startup_stm32f10x_X.s是用汇编写的系统启动文件,X代表不同的芯片型号,使用时要与芯片对应。启动文件是任何处理器上电复位后首先运行的一段汇编程序,为C语言的运行搭建合适的环境。其主要作用为:设置初始堆栈指针(SP);设置初始程序计数器(PC)为复位向量,并在执行main()函数前调用SystemInit()函数初始化系统时钟;设置向量表入口为异常事件的入口地址;复位后处理器为线程模式,优先级为特权级,堆栈设置为MSP主堆栈。5)stm32f10x_ppp.c和stm32f10x_ppp.h分别为外设驱动源文件和头文件,ppp代表不同的外设,使用时将相应文件加入工程。其包含了相关外设的初始化配置和部分功能应用函数,这部分是进行编程功能实现的重要组成部分。6)misc.c和misc.h提供了外设对内核中的嵌套向量中断控制器NVIC的访问函数,在配置中断时,必须把这两个文件加到工程中。2.Project文件夹下是采用标准库写的一些工程模板和例子Project由STM32F10x_StdPeriphTemplate和STM32F10x_StdPeriph_Examples组成。在STM32F10x_StdPeriph_Template中有3个重要文件:stm32f10x_it.c、stm32fl0x_it.h和stm32f10x_conf.h。1)stm32f10x_it.c和stm32f10x_it.h是用来编写中断服务函数的,其中已经定义了一些系统异常的接口,其他普通中断服务函数要自己添加,中断服务函数的接口在启动文件中已经写好。2)stm32f10x_conf.h文件被包含进stm32f10x.h文件,用来配置使用了哪些外设的头文件,用这个头文件可以方便地增加和删除外设驱动函数。为了更好地使用标准外设库进行程序设计,除了掌握标准库的文件结构,还必须掌握其体系结构,将这些文件对应到CMSIS标准架构上。标准外设库体系结构如图3-68所示。图3-68描述了库文件之间的包含调用关系,在使用标准库开发时,把位于CMSIS层的文件添加到工程中不用修改,用户只需根据需要修改用户层的文件便可以进行软件开发。德国Keil公司于2007年推出嵌入式开发工具MDK(MicrocontrollerDevelopmentKit),集成了业内最领先的技术,包括μVision
集成开发环境与RealView
编译器RVCT,适合不同层次的开发者使用,包括专业的应用程序开发工程师和嵌入式软件开发的入门者。图3-68标准外设库体系结构STM32固件库文件介绍如下:1)汇编编写的启动文件startup_stm32f10x_hd.s:设置堆栈指针、设置PC指针、初始化中断向量表、配置系统时钟。2)时钟配置文件system_stm32f10x.c:把外部时钟HSE=8M,经过PLL倍频为72MHz。3)外设相关的文件stm32f10x.h:实现了内核之外的外设的寄存器映射;xxx:GPIO、USRAT、I2C、SPI、FSMC;stm32f10x_xx.c:外设的驱动函数库文件;stm32f10x_xx.h:存放外设的初始化结构体,外设初始化结构体成员的参数列表,外设固件库函数的声明。4)内核相关的文件CMSIS-Cortex微控制器软件接口标准;core_cm3.h:实现了内核里面外设的寄存器映射;core_cm3.c:内核外设的驱动固件库;NVIC(嵌套向量中断控制器)、SysTick(系统滴答定时器);misc.h;misc.c。5)头文件的配置文件stm32f10x_conf.h:头文件的头文件;//stm32f10x_usart.h;//stm32f10x_i2c.h;//stm32f10x_spi.h;//stm32f10x_adc.h;//stm32f10x_fsmc.h;
......6)专门存放中断服务函数的C文件stm32f10x_it.c;stm32f10x_it.h。中断服务函数可以随意放在其他的地方,并不是一定要放在stm32f10x_it.c#include"stm32f10x.h"//相当于51单片机中的#include<reg51.h>intmain(void){ //主程序}3.8STM32F103开发板的选择本书应用实例是在野火F103-指南者开发板上调试通过的,该开发板可以在
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 司法2024工作计划
- 质量部工作计划
- 8中医院工作计划范本
- 六年级备考计划
- 2024年医务科工作计划范例
- 2024年1月幼儿园周工作计划
- 有关教导工作计划模板
- 2024中学团支部工作计划书怎么写
- 汽车售后客服工作计划范本
- 2024业务营业员个人工作计划
- 半导体封装过程wirebond中wireloop的研究及其优化
- Elektronikon控制器操作说明书
- 口袋妖怪黑白全图鉴
- 胆管癌PPT课件
- 10KV高压线防护施工方案——杉木杆
- 最新OTS用表格汇总
- 污水余氯检测登记本(1)
- 年度压疮发生情况分析总结报表
- 最新冀教版二年级数学上册《象形统计图和统计表象形统计图和统计表》优质课教案_3
- 北师大版二年级数学上册期末考试复习计划
- R语言入门教程(超经典)
评论
0/150
提交评论