第4章 Keil MDK-ARM集成开发环境4H_第1页
第4章 Keil MDK-ARM集成开发环境4H_第2页
第4章 Keil MDK-ARM集成开发环境4H_第3页
第4章 Keil MDK-ARM集成开发环境4H_第4页
第4章 Keil MDK-ARM集成开发环境4H_第5页
已阅读5页,还剩117页未读 继续免费阅读

下载本文档

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

文档简介

1、Embedded System Development聊城大学(dxu) 理工学院曹银杰caoyinjie 嵌入式系统(xtng)与应用 共一百二十二页第四章 Keil MDK-ARM集成开发(kif)环境4.1 Keil MDK-ARM简介(jin ji)4.2 Keil MDK-ARM安装4.3 Keil MDK-ARM集成开发环境共一百二十二页4.1 Keil MDK-ARM简介(jin ji)Keil MDK-ARM (Microcontroller Development Kit)开发工具源自德国Keil(),被全球超过10万的嵌入式开发工程师使用。支持 1200 多种基于 ARM

2、Cortex-M 系列、ARM7、ARM9 和 Cortex-R4 处理器的设备。它包含众多示例、项目模板和中间件库,具有广泛的 TCP/IP 软件堆栈、Flash 文件系统、USB 主机和设备堆栈、CAN 访问以及舒适的图形用户界面解决方案。易于使用的 IDE 和带有高级分析功能的全功能调试器可帮助开发人员快速启动项目,并集中精力实现其应用程序的差异(chy)功能。MDK-ARM四种版本:MDK-Lite、基础版、标准版和专业版。都提供C/C+开发环境,专业版包括丰富的中间件库。共一百二十二页Keil MDK-ARM简介(jin ji)PC、IDE开发环境(hunjng)、仿真器、评估板宿主

3、机仿真器评估板IDE开发环境逻辑分析仪示波器Keil MDK-ARM共一百二十二页Keil MDK-ARM简介(jin ji)完全支持 Cortex-M、Cortex-R4、ARM7 和 ARM9 设备行业领先的 ARM C/C+ 编译工具链Vision4 IDE、调试器和模拟环境Keil RTX 确定性、占用空间小的实时操作系统(具有(jyu)源代码)TCP/IP 网络套件提供多个协议和各种应用程序USB 设备和 USB 主机堆栈配备标准驱动程序类ULINKpro 支持对正在运行的应用程序进行即时分析并记录执行的每条 Cortex-M 指令有关程序执行的完整代码覆盖率信息执行性能分析器和性能

4、分析器支持程序优化大量示例项目可帮您快速熟悉 MDK-ARM 强大的内置功能符合 CMSIS Cortex 微控制器软件接口标准共一百二十二页Keil MDK-ARM简介(jin ji)在ARM公司的网站()注册、下载最新的Keil MDK-ARM开发工具软件, MDK-Lite版:受限制的32K编译(biny)、链接、部分模块功能。共一百二十二页Keil MDK-ARM简介(jin ji)MDK-Lite版: mdk_510.exe,约280M,直接(zhji)安装即可。共一百二十二页4.2 Keil MDK-ARM安装(nzhung)共一百二十二页Keil MDK-ARM安装(nzhung

5、)软件安装后需要安装所选用芯片(xn pin)的驱动包安装,里面包含了开发模板、接口驱动等。共一百二十二页Keil MDK-ARM安装(nzhung)选中要安装的公司的芯片型号即可到对应页面(y min)下载安装包DFP文件。共一百二十二页Keil MDK-ARM安装(nzhung)下载后的DFP文件,可直接安装到开发(kif)环境内。共一百二十二页4.3 Keil MDK-ARM集成(j chn)开发环境安装(nzhung)后在桌面快捷图标,或开始菜单启动即可。ToolbarsWatchWindowMemoryWindowLogic AnalyzerEditorWorkspaceMenu B

6、arProjectWorkspaceOutputWindowToolboxPage TabsPeripheralDialog共一百二十二页共一百二十二页共一百二十二页共一百二十二页共一百二十二页第一个按钮:Translate 就是翻译当下修改过的文件,说明白点就是检查下有没有语法错误,并不会去链接库文件,也不会生成可执行文件。 第二个按钮:Build 就是编译(biny)当下修改过的文件,它包含了语法检查,链接动态库文件,生成可执行文件。 第三个按钮:Rebuild 重新编译整个工程,跟 Build 这个按钮实现的功能是一样的,但有所不同的是它编译的是整个工程的所有文件,耗时巨大。 共一百二十

7、二页共一百二十二页共一百二十二页共一百二十二页“File”菜单(ci dn)芯片(xn pin)数据库Licenses注册管理新建、保存源程序文件共一百二十二页“Edit”菜单(ci dn)设置(shzh)书签分组隐藏源文件共一百二十二页“Edit”菜单(ci dn)编辑配置(pizh)菜单:代码编辑器设置颜色与字体设置用户关键字快捷键代码模板共一百二十二页“View”菜单(ci dn)显示(xinsh)或隐藏状态栏显示或隐藏文件工具条显示或隐藏编译工具条显示或隐藏调试工具条显示或隐藏工程空间显示或隐藏输出窗口显示或隐藏浏览窗口显示或隐藏反汇编窗口显示或隐藏Watch & Call Stack

8、 窗口显示或隐藏存储器窗口显示或隐藏代码覆盖窗口显示或隐藏性能分析窗口显示或隐藏逻辑分析仪窗口显示或隐藏符号窗口显示或隐藏Call Stack显示或隐藏Trace显示窗口显示或隐藏串行窗口显示或隐藏SFR寄存器显示或隐藏工具箱运行时更新调试窗口显示或隐藏源文件中的头文件共一百二十二页“Project”菜单(ci dn)创建(chungjin)一个新工程创建一个新工作区导入一个工程打开一个工程关闭当前工程维护工程组件、配置环境及管理书从设备库中选择CPU改变目标、组、文件的工具选项清除编译生成的文件编译已修改的文件批处理编译编译当前文件停止编译重新编译所有的源文件打开最近使用的工程文件共一百二十

9、二页“Project”菜单(ci dn)维护(wih)工程组件、配置工具环境及管理书:工程管理共一百二十二页“Project”菜单(ci dn)-维护工程组件、配置(pizh)工具环境及管理书:配置工具环境共一百二十二页“Project”菜单(ci dn)-维护工程组件(z jin)、配置工具环境及管理书:管理电子书共一百二十二页“Project”菜单(ci dn)-改变目标、组、文件(wnjin)的工具选项:配置目标板共一百二十二页改变目标、组、文件(wnjin)的工具选项:目标(mbio)处理器“Project”菜单-共一百二十二页改变(gibin)目标、组、文件的工具选项:设置(shzh

10、)输出文件“Project”菜单-共一百二十二页改变目标、组、文件(wnjin)的工具选项:设置(shzh)表单文件“Project”菜单-共一百二十二页改变目标(mbio)、组、文件的工具选项:设置用户(yngh)自定义程序“Project”菜单-共一百二十二页改变目标(mbio)、组、文件的工具选项:配置(pizh)C编译器“Project”菜单-共一百二十二页改变目标(mbio)、组、文件的工具选项:配置(pizh)汇编器“Project”菜单-共一百二十二页改变目标(mbio)、组、文件的工具选项:配置(pizh)链接器“Project”菜单-共一百二十二页改变目标(mbio)、组、文

11、件的工具选项:配置(pizh)调试信息“Project”菜单-共一百二十二页改变目标(mbio)、组、文件的工具选项:仿真器信息(xnx)“Project”菜单-共一百二十二页改变目标(mbio)、组、文件的工具选项:配置(pizh)Flash下载工具“Project”菜单-共一百二十二页“Debug”菜单(ci dn)运行到下一个(y )活动断点单步运行进入一个函数单步运行跳过一个函数从当前函数跳出运行到当前行光标处启动或停止Vision3调试模式停止运行打开断点对话框在当前行设置断点Enable/disable当前行的断点使程序中的所有断点无效去除程序中的所有断点显示下一条要执行的指令DE

12、BUG设置使能Trace跟踪查看Trace结果记录代码执行次数或时间打开逻辑分析仪对话框打开存储器映射对话框打开性能分析仪对话框打开在线汇编对话框编辑调试函数及调试初始化文件共一百二十二页“Flash”菜单(ci dn)擦除Flash配置(pizh)Flash工具下载程序映象到Flash中共一百二十二页“Peripherals”菜单(ci dn)共一百二十二页“Tools”菜单(ci dn)共一百二十二页MDK工具栏常规(chnggu)状态下工具栏:调试(dio sh)状态下工具栏:共一百二十二页工程管理(gunl)窗口工程文件(wnjin)窗口寄存器窗口电子文档窗口函数窗口函数模板共一百二十

13、二页源代码窗口(chungku)源代码彩色显示文本(wnbn)的选择任意数量的文本在文本上拖曳一个单词双击这个单词一行文本移动指针到这个行的左端直到它变成向右指示的箭头并单击它多行文本移动指针到这个行的左端直到它变成向右指示的箭头并拖拽它垂直文本按住Alt并拖拽源代码和汇编混合显示共一百二十二页调试(dio sh)窗口及对话框Breakpoint 对话框,可在此对话框中定义程序执行停止的条件; Code Coverage 窗口统计了程序中被执行部分及未被执行部分的执行信息; Disassembly Window 可以反汇编方式来查看及测试程序; Logic Analyzer 窗口可以以图形的方

14、式来显示变量及外设寄存器值的变化; Memory Window 对话框可查看及修改内存内容; Memory Map 指定程序代码及数据变量所用的内存空间; Output Window - Command 窗口可进行命令输入和信息输出; Execution Profiler 窗口被集成在编辑和反汇编窗口中,用于时间及调用信息统计; Performance Analyzer 窗口可以显示执行时间的统计信息; Serial Window 用串口通信,显示串口通信内容; Symbol Window 用于显示应用程序中的调试符号信息; Toolbox 提供一个可配置的按钮,此按钮可用于调试命令及调试函数

15、(hnsh)的执行; Watch Window 可以查看及修改程序变量,并列出当前的函数调用关系。 共一百二十二页Breakpoint对话框Debug - Breakpoint Execution Break(E):当表达式是代码地址(dzh)时,断点被定义。 Access Break(A):当所指定的内存访问发生时,此断点有效。 Conditional Break(C):当表达式不能转化为内存地址时,一个类型的断点被定义。 共一百二十二页代码(di m)统计对话框View - Code Coverage Windows 代码统计对话框提供(tgng)了程序中各个模块及函数的执行情况。 在Cu

16、rrent Module(当前模块)下拉列表框中列出了程序所有要模块,每个模块或函数的指令执行百分比共一百二十二页反汇编窗口(chungku)View - Disassembly Window 反汇编窗口可以将源程序和汇编程序一起显示,也可以只显示汇编程序。 通过Debug - View Trace Records可以查看前面(qin mian)指令的执行记录。共一百二十二页逻辑(lu j)分析仪Debug - Logic Analyzer Window Vision3逻辑分析仪可以将指定的变量或VTREGs值的变化以图形方式(fngsh)表示出来。 逻辑分析仪信号配置详细设置使用限制共一百二

17、十二页内存(ni cn)窗口View - Memory Window 通过内存窗口可以查看存储器内容(nirng)。 内存窗口最多可将四个不同的存储域显示在不同的页中。 窗口中的右键菜单可以选择输出格式。 在Address域内,可以输入一个表达式,此表达式的值为所显示内容的地址。 在某个单元的值上双击可打开一个编辑框,它允许键入一个新的存储值改变存储内容。 使能View Periodic Window Update,可以在运行目标程序时更新此窗口中的值。共一百二十二页内存映射(yngsh)窗口Debug - Memory Map 内存映射对话框可以用来设定那些地址空间用于存储数据(shj)、那

18、些地址空间用于存储程序。 被访问的地址空间没有被明确声明时就必须进行地址映射,如存储映射I/O空间。 在目标程序运行期间,保证让程序不进行非法的存储区访问。共一百二十二页输出(shch)窗口View - Output Window 输出窗口:编译信息输出、命令输出、文件(wnjin)查找结果输出。 命令输出可以是“调试命令”、“变量及寄存器”、“调试函数”。共一百二十二页执行(zhxng)剖析器Debug - Execution Profiling - Time/Calls 执行剖析器,它可以记录执行全部程序代码所需的时间。 它具有两种显示方式:Call(显示(xinsh)执行次数)和Time

19、(显示执行时间)。 将鼠标放在指定的入口处即可显示有关执行时间及次数的详细信息。共一百二十二页性能(xngnng)分析仪Debug - Performance Analyzer 性能分析仪用于记录和显示(xinsh)程序的执行时间。 Vision ARM 仿真器记录整个程序代码的时间统计信息。共一百二十二页串行窗口(chungku)View - Serial Window printf - int fputc(int ch, FILE *f); getchar - int fgetc(FILE * stream);共一百二十二页符号(fho)窗口View - Symbol Window 显示定

20、义在当前被载入的应用程序中的公有符号(fho)、局部符号(fho)及行号信息。 CPU特殊功能寄存器SFR符号也显示在此窗口中。共一百二十二页工具箱View - Toolbox Toolbox中包含用户可配置(pizh)的按钮。点击工具箱上的按钮可以执行相关的调试命令(debug command) 或调试函数(debug function)。工具箱按钮可以在任何时间执行,甚至是运行测试程序时。参考(cnko) 实例:DEFINE BUTTON My Status Info, MyStatus()DEFINE BUTTON Analog0 0.3V, analog0(3) DEFINE BUTT

21、ON Stop Analog0, signal kill analog0共一百二十二页Watch窗口(chungku)View - Watch & Call stack Window Locals 页列出了当前函数(hnsh)中全部的局部变量。 Watch 页列出了用户指定的程序变量。 Call Stack 页显示了当前的函数调用嵌套关系。共一百二十二页新建工程、编译、调试(dio sh)、下载内容(nirng)四共一百二十二页MDK开发(kif)的四个步骤Step 1:选择设备和指定硬件(yn jin)对象Step 2:配置设备和创建应用程序代码Vision 包含了工程管理器、编辑器和调试器

22、网上庞大地设备数据库 & Vision 简单化地芯片选择与设置共一百二十二页MDK开发(kif)的四个步骤通过(tnggu) ULINK 进行Flash Download 和 Target Debugging 通过 Vision Debugger 和 Device Simulator调试Step 3:用Vision设备仿真器分析代码Step 4: Flash下载最后在目标硬件上测试共一百二十二页新建工程(gngchng)建立源码存放(cnfng)路径:C:KeilARMExamplesFirst;新建工程文件First.Uv2;Project - New Vision Project设置CPU

23、:NXP - LPC2129;添加启动代码。共一百二十二页新建工程(gngchng)共一百二十二页添加(tin ji)管理源文件组织源码结构;添加源文件:从C:KeilARMExamplesMeasure拷贝(kobi)源文件。建立软仿真工程:Simulator为设备仿真工程。Startup启动代码Source实验源文件System系统调用源文件IniFile初始化命令文件ReadMe说明文件共一百二十二页添加(tin ji)管理源文件点击(din j)工具栏“ ”管理工程,添加源码。注:为了说明操作,直接拷贝附带例程源码。共一百二十二页设置RTX库设置ROM设置RAM设置使用微库创建HEX文

24、件设置目标文件路径设置头文件路径配置(pizh)工程点击工具栏“ ”打开工程(gngchng)配置窗口。设置分散加载设置初始化文件共一百二十二页配置启动(qdng)代码图形化配置(pizh) 图形化对话框,直观方便 免除手写几百行汇编代码 快速生成启动代码共一百二十二页编译链接(lin ji)工程点击(din j)工具栏“ ”编译链接工程Build target Simulatorassembling Spiling Mpiling Mpiling Gpiling Rpiling Serial.c.linking.Program Size: Code=9402 RO-data=958 RW-d

25、ata=48 ZI-data=1272 First.axf - 0 Error(s), 0 Warning(s).共一百二十二页Debug调试(dio sh)点击工具栏“ ”下载程序到目标板进入(jnr)调试状态共一百二十二页单步、查看(chkn)各个窗口单步、断点、全速运行:查看Debug状态下各个(gg)窗口:共一百二十二页设置编程工具Flash下载(xi zi)Flash - Configure Flash Tools:Flash芯片型号共一百二十二页设备仿真(fn zhn)实例内容(nirng)五共一百二十二页MDK的设备(shbi)仿真目标设备的所有组件都可仿真.代码(di m)可在

26、整个设备上运行完全的目标硬件仿真完整的目标高效指令集仿真中断仿真片内外围设备ADC, DAC, EBI, TimersUART, CAN, I2C. 包含外部信号和 I/O包含外部信号和 I/O充足的仿真信息包含在设备数据库里Supports 250 ARM based MCUsIncluded in RealView MDK/uvision/db_sim.asp共一百二十二页Measure程序(chngx)介绍默认路径: C:KeilARMExamplesMeasure;uVision Simulator for LPC2129;该例程描述了如何使用uVision的信号函数功能(gngnng

27、)来仿真LPC21XX一个模拟量的输入。共一百二十二页编译、链接(lin ji)、调试打开Measure工程,编译、链接程序(chngx),点击Debug进入调试状态。编译、链接Debug共一百二十二页虚拟(xn)串口打开虚拟串口2,全速(qun s)运行程序查看结果;Retarget库文件/ Serial.cint sendchar (int ch) if (ch = n) while (!(U1LSR & 0 x20); U1THR = CR; while (!(U1LSR & 0 x20); return (U1THR = ch);int getkey (void) while (!(U

28、1LSR & 0 x01); return (U1RBR);/ Retarget.cint fputc(int ch, FILE *f) return (sendchar(ch);RealView微控制器开发工具集带有一个预定义的retarget库文件,它是许多例程的一部分。retarget文件修改了底层的I/O 程序,并禁止了semi-hosting SWI 中断的使用。共一百二十二页查看(chkn)程序代码代码块彩色显示显示混合的源代码与反汇编代码改变(gibin)显示模式并且使用context menu中的其他命令 (在Disassembly窗口中点击右键)共一百二十二页调用(dioyn

29、g)栈View - Watch & Call stack Window View - Call stack Unwinder 显示函数的嵌套情况双击此页中的某行,将会在工作(gngzu)区中显示调用所选择函数的源代码。显示函数的嵌套情况显示函数参数的值或者地址双击此页中的某行,将会在工作区中显示调用所选择函数的源代码。共一百二十二页通过(tnggu)设置Trace功能,可以跟踪代码跟踪(gnzng)代码要求设置Enable/Disable Trace Recording可以查看到在到达断点前CPU所执行的指令在工程工作空间的Regs页面会显示执行所选择的指令在执行过程中相应的CPU寄存器内容。

30、共一百二十二页双击一行代码,在代码的左面出现(chxin)一个红点,表示断电设置成功断点(dun din)使用工具栏的断点相关按钮:调试状态下:Debug - Breakpoint,可以设置高级断点在不具备trace功能的硬件环境下,不具备条件触发中断的能力条件触发中断只能在软件仿真的情况下实现当对变量current.time.sec进行写操作且值恒等于3的产生断点共一百二十二页查看(chkn)变量View - Watch Window可以随时查看变量、结构体以及数组的内容。在空白行双击鼠标左键或者按F2键即可添加变量,通过同样的方式也可以修改变量的值。 在源文件编辑窗口(chungku)选择

31、需要添加的变量名,单击鼠标右键,在弹出的局部菜单中选择Add to Watch Window选项将其加入。共一百二十二页查看(chkn)片上外设Vision里提供了片上外设对话框:I/O端口,中断,定时器,A/D转换器,串口和一些芯片特有的外设。对话框会显示当前外设的状态,同时(tngsh)也可以直接在对话框中改变相应的输入值。共一百二十二页性能(xngnng)分析仪&代码覆盖统计Debug - Performance AnalyzeView - Code Coverage Windows共一百二十二页信号(xnho)函数信号函数可以在后台实现信号输入、脉冲(michng)输入等重复操作。信号

32、函数可用于模拟和测试串行I/O、模拟I/O、端口通讯和其他一些重复发生的外部事件。FUNC void MyStatus (void) printf (=n); printf ( Analog-Input-0: %fn, ain0); printf ( Analog-Input-1: %fn, ain1); printf ( Analog-Input-2: %fn, ain2); printf ( Analog-Input-3: %fn, ain3); printf ( Port 0: %08Xn, port0); printf (=n);/* MEASURE.INI: Measure Debu

33、g Init File */Signal void analog0 (float limit) float volts; printf (Analog0 (%f) entered.n, limit); while (1) /* forever */ volts = 0; while (volts = 0.0) ain0 = volts; swatch (0.01); /* wait 0.01 seconds */ volts -= 0.1; /* decrease voltage */ 初始化文件信号函数共一百二十二页ToolboxView - Toolbox;DEFINE BUTTON My

34、 Status Info, MyStatus()DEFINE BUTTON Analog0 0.3V, analog0(3)DEFINE BUTTON Stop Analog0, signal kill analog0Toolbox中包含用户可配置的按钮。点击工具箱上的按钮可以执行相关的调试命令或调试函数。工具箱按钮可以在任何时间(shjin)执行,甚至是运行测试程序时。添加(tin ji)按钮语法:删除按钮语法:DEFINE BUTTON button_label, command“Kill Button num共一百二十二页逻辑(lu j)分析仪Debug - Logic Analyzer

35、 Window可以(ky)是变量或VTREGs值共一百二十二页综合(zngh)全速运行(ynxng)程序,串口输入“d”,在终端显示ADC采样值;点击Toolbox的“Analog0 0.3”按钮,输出外部信号;查看各个调试窗口状态。共一百二十二页调试命令(mng lng)/函数、分散加载文件内容(nirng)六共一百二十二页调试(dio sh)命令Vision3支持(zhch)大量命令,可以通过 Output Window Command Line 键入命令在命令入口处,语法生成器会显示命令,选项和参数。仅需键入命令名单词的首字符。类别描述断点命令允许创建和删除断点。当遇到一个特定指令时可以

36、使用断点停止程序执行或执行Vision3 命令或用户函数。普通命令可以执行一些混合的调试操作。存储器命令显示和改变存储器内容程序命令执行目标程序并分析其性能共一百二十二页调试(dio sh)命令-断点命令命令 描述 BreakAccess添加一个指定长度(地址域)的访问断点到断点列表。BreakDisable使一个或多个断点不可用。BreakEnable使能一个或多个断点。BreakKill从断点列表中移除一个或多个断点。BreakList列出当前断点。BreakSet添加一个断点表达式到断点列表。共一百二十二页调试(dio sh)命令-普通命令命令 描述ASSIGN为串行窗口分配输入输出源。

37、DEFINE创建一个工具箱按钮。DIR生成一个符号名目录。EXIT退出Vision3 调试模式。INCLUDE读取并执行命令文件中的命令。KILL删除Vision3 调试函数和工具箱按钮。LOAD载入目标模块和十六进制文件。LOG为调试窗口生成日志文件,查询日志状态及关闭日志文件。MODE为PC机的COM口设置波特率,奇偶位和停止位。RESET重启Vision3, 重设存储映射分配及重置预定义变量。SAVE在Intel HEX386文件中保存一个存储域。SCOPE显示目标程序的模块和函数的地址分配。SET为预定义变量设备字符串值。SIGNAL显示信号函数的状态和移除有效信号函数。SLOG为串行

38、窗口生成日志文件,查询日志状态及关闭日志文件。共一百二十二页调试(dio sh)命令-存储器命令命令 描述 ASM汇编内嵌代码。DEFINE定义可能在Vision3中使用的符号。DISPLAY显示存储器的内容。ENTER把值键入到指定的存储域。EVALuate求表达式的值并输出结果。MAP为存储域指定访问参数。Unassemble反汇编程序存储域。WatchSet向观测窗口中添加一个观测变量。WatchKill删除观测窗口中的所有观测变量共一百二十二页调试命令(mng lng)-程序命令(mng lng)命令 描述 COVERAGE显示代码统计信息Go启动程序执行LogicAnalyze初始化

39、逻辑分析仪PerformanceAnalyze初始化内置的性能分析仪。Pstep执行指令但不跳入过程或函数。Ostep跳出当前函数。Tstep跳过指令并跳入函数。共一百二十二页调试(dio sh)函数Vision3 中有一个内建的函数编辑器,通过Debug - Function Editor来打开。打开函数编辑器时需要输入一个文件名或者打开一个由Options for Target Debug Initialization File指定的文件。该编辑器的用法与Vision3编辑器相同,允许用户(yngh)输入和编译调试函数。共一百二十二页调试(dio sh)函数Vision3提高了一些可被调用

40、的预定义调试函数,它们不能被重定义或者被删除。预定义函数用来帮助开发者定义用户(yngh)和信号函数。名字参数描述voidexec执行调试命令doublegetdbl请求用户输入一个双精度浮点数据intgetint请求用户输入一个整型数据longgetlong请求用户输入一个长整型数据voidmemset以常量填充内存voidprintf输出函数intrand返回介于0到32767之间的随即数voidrwatch延迟执行信号函数直到读取地址成功更多函数 共一百二十二页装载域BINROMRAM文件(wnjin)映像域装载域描述运行前输出段和域在ROM/RAM里的分布(fnb)状态;运行域描述了运

41、行时输出段和域在ROM/RAM里的分布状态。CODEDATA运行域RO sectionRW sectionZI sectionSTACKImage$RO$BaseImage$RO$LimitImage$RW$BaseImage$ZI$BaseImage$RW$LimitImage$ZI$Limit共一百二十二页运行(ynxng)时的数据搬移RW段搬移(bn y)&ZI段清零装载域BINROMRAMCODEDATA运行域RORWZISTACKImage$RO$BaseImage$RO$LimitImage$RW$BaseImage$ZI$BaseImage$RW$LimitImage$ZI$Li

42、mit# Copy RW dataInitialize: ldr r0, =Image$RO$Limit ldr r1, =Image$RW$Base ldr r3, =Image$RW$Limit cmp r0, r1 beq F1F0: cmp r1, r3 LDRCC r2, r0, #4 strcc r2, r1, #4 bcc F0# Paste zero initialized dataF1: ldr r1, =Image$ZI$Limit ldr r3, =Image$ZI$Base mov r2, #0F2: cmp r3, r1 strcc r2, r3, #4 bcc F2

43、共一百二十二页Scatterfile分散(fnsn)加载文件分散加载(Scatlerloading),即工程里的.scf文件;在scatterfile中可以为每一个代码(di m)或数据区执行时指定不同的存储区域地址。分散加载文件;RUN IN FLASHLR_ROM1 0 x00000000 0 x00200000 ER_ROM1 0 x00000000 0 x00200000 *.o (RESET, +First) *(InRoot$Sections) .ANY (+RO) RW_RAM1 0 x30000000 0 x04000000 .ANY (+RW +ZI) ;RUN IN RAM

44、LR_ROM1 0 x30000000 0 x00010000 ER_ROM1 0 x30000000 0 x00010000 *.o (RESET, +First) *(InRoot$Sections) .ANY (+RO) RW_RAM1 0 x30010000 0 x00010000 .ANY (+RW +ZI) *(InRoot$Sections)它是_main()的一部分共一百二十二页基于硬件(yn jin)的开发调试内容(nirng)七共一百二十二页环境(hunjng)工具的准备硬件:EduKit-IV+Mini2410平台一套;仿真器:ARM RealView MDK套件一套;其

45、他:电脑一台(安装(nzhung)Windows XP系统、MDK环境);拷贝出厂光盘DISK3_S3C241003-Codes01-MDKMini2410-IV文件夹到MDK安装路径: C:KeilARMBoardsEmbest;正确安装Mini2410核心板,BOOT跳线断开,连接好交叉串口线、电源线;以8.2_ADC_Test程序为例。共一百二十二页硬件(yn jin)原理随着数字技术,特别是计算机技术的飞速发展与普及,在现代控制、通信及检测领域中,对信号的处理广泛采用了数字计算机技术。由于系统的实际处理对象(duxing)往往都是一些模拟量(如温度、压力、位移、图像等),要使计算机或数

46、字仪表能识别和处理这些信号,必须首先将这些模拟信号转换成数字信号,这就必须用到 A/D 转换器。参考资料:基于S3C2410嵌入式MDK开发实验与实践.pdf0_EDUKIT-IV.pdf1_Mini2410-IV.pdf共一百二十二页S3C2410 ADC控制器分析(fnx)S3C2410处理器内部集成了采用近似比较算法(计数式)的 8 路 10 位 ADC,集成零比较器,内部产生比较时钟信号;支持软件使能休眠模式,以减少电源(dinyun)损耗。其中AIN5和AIN7可作为触摸屏控制。主要特性:精度10bit、微分线性误差 1.5 LSB、积分线性误差 2.0 LSB、最大转换速率500K

47、SPS、输入电压03.3V。主要寄存器寄存器地址R/W功能描述复位值ADCCON0 x58000000R/WADC控制寄存器0 x3FC4ADCDAT00 x5800000CRADC数据寄存器-/ .CommonInc 2410addr.h/ ADC#define rADCCON (*(volatile unsigned *)0 x58000000)#define rADCDAT0 (*(volatile unsigned *)0 x5800000c)共一百二十二页S3C2410 ADC控制器-ADCCONADCCONBitDescriptionInitial StateECFLG15End

48、of conversion flag (read only).0 = A/D conversion in process 1 = End of A/D conversion0PRSCEN14A/D converter prescaler enable.0 = Disable 1 = Enable0PRSCVL13:6A/D converter prescaler value.Data value: 1 255ADC frequency = PCLK/(PRSCVL + 1)NOTE: This A/D converter is designed to operate at maximum 2.

49、5 MHz clock,0 xFFSEL_MUX5:3Analog input channel select.000 = AIN0 001 = AIN1 010 = AIN2 011 = AIN3100 = AIN4 101 = AIN5 110 = AIN6 111 = AIN7 (XP)0STDBM2Standby mode select.0 = Normal operation mode 1 = Standby mode1READ_START1A/D conversion start by read.0 = Disable start by read operation1 = Enabl

50、e start by read operationENABLE_START0A/D conversion starts by setting this bit.If READ_START is enabled, this value is not valid.0 = No operation1 = A/D conversion starts and this bit is cleared after the start-up.0共一百二十二页S3C2410 ADC控制器-ADCDAT0ADCDAT0BitDescriptionInitial StateUPDOWN15Up or down st

51、ate of Stylus at Waiting for Interrupt Mode.0 = Stylus down state 1 = Stylus up state-AUTO_PST14Automatic sequencing conversion of X-position andY-position.0 = Normal ADC conversion1 = Sequencing measurement of X-position, Y-position-XY_PST13:12Manual measurement of X-position or Y-position.00 = No

52、operation mode01 = X-position measurement10 = Y-position measurement11 = Waiting for Interrupt Mode-Reserved11:10ReservedXPDATA(Normal ADC)9:0X-position conversion data value. (include Normal ADC conversion data value)Data value: 0 3FF-共一百二十二页程序设计(chn x sh j)启动(qdng)代码系统库初始化ADC配置ADC采样采样是否结束打印采样值开始是否

53、是否继续采样是结束否共一百二十二页相关(xinggun)代码(一)启动(qdng)代码/ S3C2410A.s系统库代码/ .CommonSrc2410lib.cvoid uart_printf(char *fmt,.);void port_init(void);void change_clock_divider(int nHdiv,int nPdiv);/ .CommonSrcsys_init.cvoid sys_init();ADC配置/ adc_test.c void adc_test(void);#define ADC_FREQ 2500000unPreScaler = PCLK/ADC_FREQ - 1;rADCCON=(114)|(unPreScaler6)|(03)|(02)|(11);共一百二十二页相关(xinggun)代码(二)判断(pndun)ADC采样是否结束/ adc_test.c void adc_test(void);while(!(rADCCON & 0 x8000);打印采样值/ adc_test.c void adc_test(void)

温馨提示

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

评论

0/150

提交评论