![面向物联网的嵌入式系统开发:基于CC2530和STM32微处理器](https://wfqqreader-1252317822.image.myqcloud.com/cover/734/25462734/b_25462734.jpg)
2.2 项目开发基本调试
CC2530使用的开发环境是IAR for 8051,在这个开发环境下创建CC2530工程,使用下载器将程序下载到 CC2530 中,使用 IAR for 8051 的开发环境的程序调试工具可实现CC2530程序的在线调试。通过在线调试得到逻辑功能正确的代码后就可以将其编译为二进制文件并固化到微处理器中长期运行了。图2.16所示开发平台调试工具,方便开发人员进行程序开发和在线调试。
![](https://epubservercos.yuewen.com/28B747/13916130105956906/epubprivate/OEBPS/Images/41_1.jpg?sign=1739030739-n7gXjkdM9ZtBArNVUHMCZItMpW4P8owP-0-f0996b3635177b36d6f5bb45fcaa7d9b)
图2.16 开发平台调试工具
2.2.1 IAR for 8051开发环境
1.主窗口界面
IAR主窗口界面如图2.17所示。
![](https://epubservercos.yuewen.com/28B747/13916130105956906/epubprivate/OEBPS/Images/41_2.jpg?sign=1739030739-zATdVBB1alkqsgW5BgSvZfXGyGFn2Do6-0-758ac533ae30f0f1930677c953b5dc9d)
图2.17 IAR主窗口界面
(1)Menu Bar(菜单栏):包含IAR的所有操作及内容,在编辑模式和调试模式下存在一些不同。
(2)Tool Bar(工具栏):包含一些常见的快捷按钮。
(3)Workspace Window(工作空间窗口):一个工作空间可以包含多个工程,该窗口主要显示工作空间中工程项目的内容。
(4)Edit Window(编辑窗口):代码编辑区域。
(5)Message Window(信息窗口):包括编译信息、调试信息、查找信息等内容。
(6)Status Bar(状态栏):包含错误警告、光标行/列等一些状态信息。
2.工具栏
工具栏上是主菜单中部分功能的快捷图标按钮,这些快捷按钮之所以放置在工具栏上,是因为它们的使用频率较高,例如编译按钮,这个按钮在编程的时候使用的频率相当高,这些按钮大部分也有对应的快捷键。
IAR 的工具栏共有两个:主工具栏和调试工具栏。编辑(默认)模式下只显示主工具栏,进入调试模式后会显示调试工具栏。
主工具栏可以通过菜单打开,即“View→Toolbars→Main”,如图2.18所示。
![](https://epubservercos.yuewen.com/28B747/13916130105956906/epubprivate/OEBPS/Images/42_1.jpg?sign=1739030739-QHpr6F32n6E0NP11wKXq8B1pXKRpiHHc-0-576772f6141bab29959bb890380a3b5c)
图2.18 打开主工具栏
(1)主工具栏。在编辑模式下,只有主工具栏,这个工具栏里面内容也是在编辑模式下常用的快捷按钮,如图2.19所示。
![](https://epubservercos.yuewen.com/28B747/13916130105956906/epubprivate/OEBPS/Images/42_2.jpg?sign=1739030739-Oa5gXptHgQp1qQm6XPPV6zCNed5UVZZz-0-9a5de898565d76d7a7b9242823b3a88d)
图2.19 主工具栏
(2)调试工具栏。调试工具栏是在程序调试时候才有效的快捷按钮,在编辑模式下,这些按钮是无效的,如图2.20所示。
![](https://epubservercos.yuewen.com/28B747/13916130105956906/epubprivate/OEBPS/Images/43_1.jpg?sign=1739030739-sq7bE5ILqGl4CC82ttWBHhEG0bK5UPh2-0-790ba7867b7be3fdc002ecf108261fc0)
图2.20 调试工具栏
Reset:复位。
Break:停止运行。
Step Over:逐行运行,快捷键为F10。
Step Into:跳入运行,快捷键为F11。
Step Out:跳出运行,快捷键为F11。
Next Statement:运行到下一语句。
Run to Cursor:运行到光标行。
Go:全速运行,快捷键为F5。
Stop Debugging:停止调试,快捷键为Ctrl+Shift+D。
逐行运行也称为逐步运行,跳入运行也称为单步运行,运行到下一语句和逐行运行类似。
2.2.2 IAR for 8051程序调试
1.CC2530工程的创建
CC2530工程的创建分为三个步骤,分别是创建工程、添加源代码、工程配置,每个步骤又分为几个小步骤。下面将分析CC2530工程的创建流程。
1)创建工程
创建工程步骤可分为两个小步骤,分别是新建 Workspace(工作空间)和新建 Project (项目)。Workspace是整个CC2530工程的总框架,CC2530的代码都是在Workspace下开发的。Project是Workspace下的子项目,Project可以是一个或多个,通过工程配置可实现一个工程下的多个微处理器程序开发。
(1)新建工作空间。打开IAR开发环境,在菜单栏中单击“File→New→Workspace”创建新的工作空间,如图2.21所示。当Workspace创建完成后IAR将会产生一个空窗口,如图2.22所示。
(2)新建Project。在创建的Workspace下单击“Project→Create New Project”,然后在“Tool chain”中选择“8051”微处理器内核,最后单击“OK”按钮即可创建一个新项目,如图2.23所示,设置文件名称后保存文件。当新项目建立完成后,IAR将会在File中产生的文件目录,如图2.24所示。
2)添加源代码
添加源代码是指在空的项目中添加对微处理器进行操作的代码。通常,在开发微处理器的程序时使用的是C语言,因此添加源代码文件时实际添加的是C文件。IAR添加源代码可分为三个步骤,分别是创建C文件、将C文件加入工程、将源代码加入C文件,实际步骤如下。
![](https://epubservercos.yuewen.com/28B747/13916130105956906/epubprivate/OEBPS/Images/44_1.jpg?sign=1739030739-RPLTmn0QFVu3OTQdpKt4aoRmz4QsAEBf-0-7189896cbc7419e59b43f23ad9be238b)
图2.21 创建新的工作空间
![](https://epubservercos.yuewen.com/28B747/13916130105956906/epubprivate/OEBPS/Images/44_2.jpg?sign=1739030739-VY0JgcQ2OkJG2ff3oCZIF382ODgpDSct-0-811e0b8c2143a6561cd742bc6618bc20)
图2.22 创建完成后产生的空窗口
![](https://epubservercos.yuewen.com/28B747/13916130105956906/epubprivate/OEBPS/Images/44_3.jpg?sign=1739030739-Pd6mgZxo4RygDc85IfUeZvp58DKhv904-0-28a0b6d85f39f825a8101ac214c7b9f9)
图2.23 选择微处理器内核
![](https://epubservercos.yuewen.com/28B747/13916130105956906/epubprivate/OEBPS/Images/44_4.jpg?sign=1739030739-wBPSspbrSRo7vFATajbvbiOXOyWD6vbi-0-c03cf14694bb1b13e144764b39ebbfb4)
图2.24 File中产生的文件目录
(1)创建C文件。单击左上角的“New document”,代码框中会显示出一个空白的临时文件,如图2.25所示,单击空白的临时空间后单击“File→Save As”将文件保存到与之前保存工作空间(Workspace)的相同文件夹中,如图 2.26 所示,保存完成后临时文件将其更名为保存文件名。
![](https://epubservercos.yuewen.com/28B747/13916130105956906/epubprivate/OEBPS/Images/44_5.jpg?sign=1739030739-WGzBhgDD5NbpB1bEyWgUs3YfkNLvt20Y-0-4b470f5caf3cbd2728c6e15a72994c4e)
图2.25 创建空白文件
![](https://epubservercos.yuewen.com/28B747/13916130105956906/epubprivate/OEBPS/Images/44_6.jpg?sign=1739030739-TZ8OM9dWvxwUHd7brltpz5ZXvWAGYlAk-0-affae1cf27f87421cca66cb2e37359a6)
图2.26 创建完成的空白文件
(2)将C文件加入工程。选择菜单“Project→Add→Add Files…”,找到创建好的C文件,单击该文件可将其加入工程中,如图2.7所示。当C文件添加完成后,Files框中就会显示加入工程中的C文件名称,单击C文件可以将其打开并加入工程的文件中,如图2.28所示。
![](https://epubservercos.yuewen.com/28B747/13916130105956906/epubprivate/OEBPS/Images/45_1.jpg?sign=1739030739-juymsyC9zZolWmmFn2DZoPjCAF7kCfpx-0-34919122fb78a43433c36080f7ec4ac4)
图2.27 将空文件加入工程的方法
![](https://epubservercos.yuewen.com/28B747/13916130105956906/epubprivate/OEBPS/Images/45_2.jpg?sign=1739030739-k0hFprDqWAsOdLeMqzgoHukIIBb3h96v-0-95b587df4cc4eca8aa66249420a448a3)
图2.28 空文件加入完成
(3)将源代码加入C文件。在C文件中加入关联文件和可执行的源代码并保存,即可完成源代码的建立,如图2.29所示。
![](https://epubservercos.yuewen.com/28B747/13916130105956906/epubprivate/OEBPS/Images/45_3.jpg?sign=1739030739-Hmk5XW2fBp8ZmGQeK8YkS1o7uP3xKR4d-0-32e49405a6a807078ed3f4c41b018581)
图2.29 将源代码加入C文件
3)工程配置
将源代码加入工程后,工程的建立并没有结束,代码的执行与微处理器的类型、资源是息息相关的。通常,同一个工程在不同微处理器上运行会产生不同的效果,因此工程需要对程序运行的平台,如微处理器类型、内存、编译工具、镜像文件等进行配置。工程配置分为四个步骤:芯片选择、堆栈配置、HEX文件配置、调试工具配置。步骤如下:
(1)芯片选择。选择菜单“Project→Option”可进入工程配置页面,打开配置页面后单击芯片选择按钮选择“CC2530F256”,如图2.30所示。
![](https://epubservercos.yuewen.com/28B747/13916130105956906/epubprivate/OEBPS/Images/46_1.jpg?sign=1739030739-WMvx8NDVyfz2LHcYVsGEb4xBvuU1ln7o-0-385df919a8d7da4149181e6fdfbada17)
图2.30 选择芯片型号
(2)堆栈配置。在General Option选项下选择“Stack/Heap”选项将“XDATA”的“0xEFF”配置为“0x1FF”,如图2.31所示。
(3)HEX文件配置。在Linker选项下选择“Extra Option”,然后在此处配置HEX生成的指令,如图2.32所示。配置指令为“-Ointel-extended,(CODE)=.hex”。
![](https://epubservercos.yuewen.com/28B747/13916130105956906/epubprivate/OEBPS/Images/46_2.jpg?sign=1739030739-Cu7Z2S2wueluefik0tDHjD8LSOuRnWXq-0-fd815b5bc1f790d477b27232cdf791b0)
图2.31 修改堆栈地址
![](https://epubservercos.yuewen.com/28B747/13916130105956906/epubprivate/OEBPS/Images/46_3.jpg?sign=1739030739-8OX6F82YBzVNLdkNqHTwP9leKuPb0Pg5-0-0dc114ecf7b5d38fb95f1e93ae1caa30)
图2.32 配置HEX文件生成指令
(4)调试工具配置。选择“Debugger→Setup→Driver”,选择“Texas Instruments”,如图2.33所示。
最后单击“OK”按钮保存CC2530工程。
2.CC2530工程下载及调试
工程配置完成后,就可以编译下载并调试程序了,下面分析程序的下载、调试等功能。
![](https://epubservercos.yuewen.com/28B747/13916130105956906/epubprivate/OEBPS/Images/47_1.jpg?sign=1739030739-TFMSKcGCJrOpZnhZTLCEpmqRZLq5EiNY-0-6fa05c49b2b36121b3ebcedcb0924931)
图2.33 选择芯片调试工具
(1)编译工程。单击“Project→Rebuild All”或者直接单击工具栏中的“make”按钮,编译成功后会在该工程的“Debug\Exe”目录下生成led.d51和led.hex文件。
(2)下载程序。正确连接SmartRF04EB仿真器到PC和ZXBee Lite节点(第一次使用仿真器需要安装驱动“C:\Program Files(x86)\Texas Instruments\SmartRF Tools\Drivers\Cebal”,打开ZXBee CC2530开发平台电源(上电),按下SmartRF04EB仿真器上的复位按键,单击“Project→Download and Debug”或者直接单击工具栏的下载按钮将程序下载到CC2530开发平台。程序下载成功后IAR自动进入调试界面,如图2.34所示。
![](https://epubservercos.yuewen.com/28B747/13916130105956906/epubprivate/OEBPS/Images/47_4.jpg?sign=1739030739-bbQcxAX6sAAZGONc14gOCWPdd4U5ZDHf-0-71a5368defed4d98b12a52d56150eb92)
图2.34 调试界面
(3)调试程序。进入到调试界面后,就可以对程序进行调试了。IAR 的调试按钮包括如下几个选项:复位按钮Reset、停止按钮Break
、逐行运行Step Over
、跳入函数按钮Step Into
、跳出函数按钮Step Out
、下一条语句Next Statement
、运行到光标行Run to Cursor
、全速运行Go和停止调试按钮 Stop Debugging和停止调试按钮 Stop Debugging
。
(4)查看变量。在调试的过程中,可以通过Watch窗口观察程序中变量值的变化。在菜单栏中单击“View→Watch”即可打开该窗口,如图2.35所示。打开Watch窗口后,在IAR界面的右侧即可看到Watch窗口,如图2.36所示。
![](https://epubservercos.yuewen.com/28B747/13916130105956906/epubprivate/OEBPS/Images/48_1.jpg?sign=1739030739-03CAn7PaBjJKBDXCJZFpqdhXOUTDuZvz-0-066b9d9e23e21f98dd70f0dd3efe9324)
图2.35 打开Watch窗口
![](https://epubservercos.yuewen.com/28B747/13916130105956906/epubprivate/OEBPS/Images/48_2.jpg?sign=1739030739-KorY5vgy1R5ytD3x50Uu3czo9v0HITmK-0-73a14cd449f97d68812c3d8f093ea135)
图2.36 Watch窗口
Watch窗口变量调试方法:将需要调试的变量输入Watch窗口的“Expression”输入框中,然后按回车键,系统就会实时地将该变量的调试结果显示在Watch窗口中。在调试过程中,可以借助调试按钮来观察变量值的变化情况,如图2.37和2.38所示。
Watch窗口变量调试方法:将需要调试的变量输入Watch窗口的“Expression”输入框中,然后按回车键,系统就会实时地将该变量的调试结果显示在Watch窗口中。在调试过程中,还可以借助调试按钮来观察变量值的变化情况,如图2.37和图2.38所示。
![](https://epubservercos.yuewen.com/28B747/13916130105956906/epubprivate/OEBPS/Images/48_3.jpg?sign=1739030739-HQItq8BYszwqUA1k1qMMk8kItOB1j9RU-0-9030496d49cf2ad02dba3dcababafbe9)
图2.37 Watch窗口变量调试(1)
![](https://epubservercos.yuewen.com/28B747/13916130105956906/epubprivate/OEBPS/Images/48_4.jpg?sign=1739030739-oTPK53FW8xdLKLZRLfkufk5pEBrhjqzl-0-f353440ad38fecc3e2c7a392683262d0)
图2.38 Watch窗口变量调试(2)
(5)查看寄存器。在嵌入式系统的程序开发中,很重要的调试功能就是查看寄存器的值,IAR 支持在调试的过程中查看寄存器的值。在程序调试过程中,单击菜单“View→Register”即可打开寄存器窗口。在默认情况下,寄存器窗口显示的是基础寄存器的值,单击寄存器下拉框选项可以看到不同设备的寄存器,如图2.39所示。
![](https://epubservercos.yuewen.com/28B747/13916130105956906/epubprivate/OEBPS/Images/49_1.jpg?sign=1739030739-76B9fw08LOTiIOEWKyEPBJpOnAnOLQHt-0-20534fcfbc0bb87a2c48532df0e88b3a)
图2.39 寄存器窗口
2.2.3 开发实践:实现一个工程项目
1.开发设计
CC2530在开发过程中需要使用IAR for 8051开发环境对CC2530的程序进行创建、编辑和调试。其中CC2530工程的建立可分为三个步骤:创建工程、添加源代码和工程配置。
CC2530工程建立之后,需要使用IAR for 8501集成开发环境的代码在线调试功能,在线调试功能又分为三个方面的调试方法,这三个方面分别是代码单步调试、查看代码变量参数、查看微处理器寄存器状态。
通过工程建立的三个步骤,以及代码调试的三个方面内容完成对 CC2530 程序在 IAR for 8051开发环境上的操作步骤。
2.功能实现
本任务的驱动程序源代码如下:
![](https://epubservercos.yuewen.com/28B747/13916130105956906/epubprivate/OEBPS/Images/49_2.jpg?sign=1739030739-AY9QNFSFtjUiMR5mHYIBGXncaDCvRDaq-0-54555d9a320bb0a2f14119995243ffd7)
![](https://epubservercos.yuewen.com/28B747/13916130105956906/epubprivate/OEBPS/Images/50_1.jpg?sign=1739030739-2U6Y94lvSXaM37gl7gKNKviZ8Dh1S1bp-0-f3b9899196aea1fb13d81fecbfd43bb6)
![](https://epubservercos.yuewen.com/28B747/13916130105956906/epubprivate/OEBPS/Images/51_1.jpg?sign=1739030739-gyB4EdqUPeKuDMWdG6M15pD3yfZXKl8n-0-004ac1762f456a50922f861b94088aae)
2.2.4 小结
通过本节的学习和实践,读者可以通过IAR for 8051开发环境创建CC2530工程,并使用IAR for 8051开发环境对CC2530工程代码进行在线调试。学会使用IAR for 8051开发环境的调试工具可以更加深入地了解 CC2530 工程代码的运行原理以及 CC2530 程序在运行时微处理器内部的寄存器的数值变化。
2.2.5 思考与拓展
(1)IAR for 8051开发环境在建立CC2530工程时需要配置哪些参数?
(2)IAR for 8051开发环境调试窗口的每个按钮都是什么功能?
(3)如何将CC2530工程代码中的参数加载到Watch窗口中?
(4)在IAR for 8051开发环境中如何打开窗口寄存器?