问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

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

创作时间:
作者:
@小白创作中心

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

引用
CSDN
1.
https://blog.csdn.net/qq_20222919/article/details/137714997

在使用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
![](https://wy-static.wenxiaobai.com/chat-rag-image/3561389044583947046)
#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语句可以使用,其他情况下也能使用。比如调试通信协议的时。当接收到不同的指令就需要执行不同的代码,通常情况下需要外部给单片机发送命令,单片机接收到命令后再执行相关函数。这样调试起来比较浪费时间,而且比较麻烦。通过使用这种方法,直接在观察窗口中修改指令,就可以执行对应的函数。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号