CCS在线调试时实时修改变量值

  在使用CCS调试dsp芯片时,发现CCS软件有一个非常好的功能,在仿真调试的时候可以实时修改代码中变量的值。这个功能在调试switch语句的时候非常好用,比如想要执行哪个case语句,直接在仿真界面里面修改switch语句入口参数就行。
  话不多说,直接上代码演示。

#include "DSP2833x_Device.h"     // DSP2833x Headerfile Include File
#include "DSP2833x_Examples.h"   // DSP2833x Examples Include File

#include "leds.h"

int i=0,j=0;

void main()
{
	InitSysCtrl();

	InitPieCtrl();
	IER = 0x0000;
	IFR = 0x0000;
	InitPieVectTable();

	LED_Init();
	while(1)
	{
		i=j;
	}
}

  先用一个简单的功能来演示,主代码就执行一条语句 将j的值赋给i,按照正常逻辑来讲,这个i的值永远都是0。但是在这里就是见证奇迹的时刻了。直接仿真运行代码。

  进入仿真界面后再i变量上单击鼠标右键,选择添加到观察窗口。同样的方法也将j的值添加到观察从窗口。
在这里插入图片描述
然后再右边窗口中选中实时刷新按钮。
在这里插入图片描述
接着在变量观察窗口i上面鼠标右键,选择Graph
在这里插入图片描述
变量i的值,就会以曲线的形式在下面绘制出来。
在这里插入图片描述
在新打开的图像绘制窗口上也要选中实时刷新按钮。
在这里插入图片描述

全速运行程序
在这里插入图片描述
这时候i的值显示为一条直线,下面直接在变量观察窗口修改j的值。
在这里插入图片描述

  鼠标单击value框,直接将值修改为10,然后按回车键,此时就会发现i的值也变成了10。接着继续修改j的值,从10依次减小到1。这时候底下的曲线也会依次绘制出i值变化的曲线。
在这里插入图片描述

  这样在不用修改程序的情况下,代码持续运行的过程中可以随时修改变量值,给调试程序带来了极大地便利性。
随便修改j的值看看效果。

在这里插入图片描述

接下来使用switch语句来控制几路LED灯看看效果。

#include "DSP2833x_Device.h"     // DSP2833x Headerfile Include File
#include "DSP2833x_Examples.h"   // DSP2833x Examples Include File

#include "leds.h"

int value;

void main()
{
	InitSysCtrl();

	InitPieCtrl();
	IER = 0x0000;
	IFR = 0x0000;
	InitPieVectTable();

	LED_Init();
	while(1)
	{
		switch(value)
		{
			case 10:  LED1_OFF; break;
			case 11:  LED1_ON; break;
			case 20:  LED2_OFF; break;
			case 21:  LED2_ON; break;
			case 30:  LED3_OFF; break;
			case 31:  LED3_ON; break;
			case 40:  LED4_OFF; break;
			case 41:  LED4_ON; break;
			case 50:  LED5_OFF; break;
			case 51:  LED5_ON; break;
			default:break;

		}
	}
}


通过switch语句中的value值控制LED的亮灭,其中LED的端口控制使用宏定义的方式。

#define LED1_OFF		(GpioDataRegs.GPCSET.bit.GPIO68=1)
#define LED1_ON			(GpioDataRegs.GPCCLEAR.bit.GPIO68=1)
#define LED1_TOGGLE		(GpioDataRegs.GPCTOGGLE.bit.GPIO68=1)

#define LED2_OFF		(GpioDataRegs.GPCSET.bit.GPIO67=1)
#define LED2_ON			(GpioDataRegs.GPCCLEAR.bit.GPIO67=1)
#define LED2_TOGGLE		(GpioDataRegs.GPCTOGGLE.bit.GPIO67=1)

#define LED3_OFF		(GpioDataRegs.GPCSET.bit.GPIO66=1)
#define LED3_ON			(GpioDataRegs.GPCCLEAR.bit.GPIO66=1)
#define LED3_TOGGLE		(GpioDataRegs.GPCTOGGLE.bit.GPIO66=1)

#define LED4_OFF		(GpioDataRegs.GPCSET.bit.GPIO65=1)
#define LED4_ON			(GpioDataRegs.GPCCLEAR.bit.GPIO65=1)
#define LED4_TOGGLE		(GpioDataRegs.GPCTOGGLE.bit.GPIO65=1)

#define LED5_OFF		(GpioDataRegs.GPCSET.bit.GPIO64=1)
#define LED5_ON			(GpioDataRegs.GPCCLEAR.bit.GPIO64=1)
#define LED5_TOGGLE		(GpioDataRegs.GPCTOGGLE.bit.GPIO64=1)

  开始调试程序,按照上面的方法将变量value的值添加到变量观测窗口,同时也将value的值添加到图形显示中。
在这里插入图片描述
为了更清晰的看到LED端口的变化,将GPIO数据寄存器也添加到变量观察窗口中。

在这里插入图片描述

  将数据寄存器展开,LED主要在GPIOC口的64–68,默认情况下端口值都为1,将变量value的值直接修改为11,点亮LED1。

在这里插入图片描述

当value的值修改为11时,可以看到GPIO68的值由1变为了0。

依次点亮所有的LED,此时在电路板上也可以看到LED依次点亮,然后依次熄灭。

在这里插入图片描述

  通过这种直接在观察窗口修改变量值的方法,测试程序的时候就方便多了。不用修改一次变量值就要调试一次。

请添加图片描述

  当然不仅switch语句可以使用,其他情况下也能使用。比如调试通信协议的时。当接收到不同的指令就需要执行不同的代码,通常情况下需要外部给单片机发送命令,单片机接收到命令后再执行相关函数。这样调试起来比较浪费时间,而且比较麻烦。通过使用这种方法,直接在观察窗口中修改指令,就可以执行对应的函数。

相关推荐

  1. C++如何const函数修改成员变量

    2024-04-14 21:38:05       40 阅读
  2. Matlab修改.mat文件中某个变量

    2024-04-14 21:38:05       42 阅读
  3. C# DLL嵌套调用修改生效

    2024-04-14 21:38:05       53 阅读
  4. 什么是CI/CD?如何PHP项目中实施CI/CD

    2024-04-14 21:38:05       63 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-14 21:38:05       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-14 21:38:05       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-14 21:38:05       82 阅读
  4. Python语言-面向对象

    2024-04-14 21:38:05       91 阅读

热门阅读

  1. HTTP学习笔记

    2024-04-14 21:38:05       30 阅读
  2. 从零开始学RSA:已知e,n,dp,c求m等4类问题解答

    2024-04-14 21:38:05       32 阅读
  3. 英文阅读~Why Trump won‘t stop suing the media and losing

    2024-04-14 21:38:05       36 阅读
  4. 第九章 动态规划part14

    2024-04-14 21:38:05       32 阅读
  5. 合并两个有序数组讲解

    2024-04-14 21:38:05       38 阅读