1)EK-TM4C123GXL开发板三只LED的硬件连接图如图5-9所示。
2)LED闪烁程序。LED闪烁的程序流程图如图5-10所示。
图5-9 TM4C123GXL开发板三只LED的硬件连接图
图5-10 LED闪烁程序流程图
3)在Keil ARM中创建threeblinky_r工程,如图5-11所示。
图5-11 创建的闪烁灯工程(寄存器)
4)编译threeblinky_r工程生成可执行的.axf格式文件,如图5-12所示。
图5-12 编译结果
5)在EK-TM4C123GXL板上对程序进行调试与测试。
①调试。单击工具栏中的图标,调出调试窗口,如图5-13所示。
图5-13 调试窗口
单击工具栏中的图标右侧的三角,按图5-14所示过程调出GPIOF端口,以便在调试中观察DATA的变化情况。
图5-14 选中GPIOF端口的过程
右键单击将ui32LEDloop变量添加到观察窗口,如图5-15所示。(www.xing528.com)
图5-15 添加ui32LEDloop变量到观察窗口的过程
单击工具栏的全速运行按钮启动调试,其结果如图5-16所示。
图5-16 全速运行结果
从DATA、DIR、RO等寄存器中的值和EK-TM4C123GXL板上的运行结果来看,三灯同时闪烁程序是正确的。下面将以单步运行方式来验证程序的运行情况是否符合程序设计思想:
单击工具栏中的复位图标使循环计数寄存器RO清零,让程序回到Startup_TM4C123G.s(如图5-17所示)的双三角位置。
图5-17 初始化代码
然后单击<F11>键单步运行这段程序,当程序运行到270行(即B_main)时,将光标放置在threeblinky.c的main函数处,然后按工具栏中的图标,让程序运行到光标处,使程序从main函数处开始执行,以便观察DATA和ui32LEDloop变量的变化情况(这时DA-TA=0x00000000、DIR=0x00000000、R0=0x20000060和ui32LEDloop=0x00000000)。
按<F11>键继续单步执行,当程序运行到ui32LEDloop=SYSCTL_RCGC2_R处时,R0=0x00000020。
说明:此时已使能GPIOF端口。
然后继续单步执行,以观察程序运行的结果,当程序运行到for(ui32LEDloop=0;ui32LEDloop<200000;ui32LEDloop ++)语句处时,为了使程序退出数万次的循环,可在命令行输入ui32LEDloop=200000命令(如图5-18所示)使程序从空操作中退出。再继续单步执行以观察程序运行状况。
图5-18 从命令行输入计数器最大值
小结:读者可从这个简单的例子中学会如何进行单步调试程序的方法。
②测试。导入编译产生的.axf文件到EK-TM4C123GXL中,其运行及测试结果如图5-19所示。
图5-19 EK-TM4C123GXL开发板测试结果
从图5-19的测试结果来看,开发板能同时发出比较炫目的白色光芒,验证了基于寄存器的三灯同时闪烁程序是正确的(R、G、B三色发光管同时发光应该是白光,这里只是近似白色,这是由于三色的比较不对)。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。