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

2024-04-14 14:36

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

这篇关于CCS在线调试时实时修改变量值的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/903249

相关文章

Java服务实现开启Debug远程调试

《Java服务实现开启Debug远程调试》文章介绍如何通过JVM参数开启Java服务远程调试,便于在线上排查问题,在IDEA中配置客户端连接,实现无需频繁部署的调试,提升效率... 目录一、背景二、相关图示说明三、具体操作步骤1、服务端配置2、客户端配置总结一、背景日常项目中,通常我们的代码都是部署到远程

Python函数的基本用法、返回值特性、全局变量修改及异常处理技巧

《Python函数的基本用法、返回值特性、全局变量修改及异常处理技巧》本文将通过实际代码示例,深入讲解Python函数的基本用法、返回值特性、全局变量修改以及异常处理技巧,感兴趣的朋友跟随小编一起看看... 目录一、python函数定义与调用1.1 基本函数定义1.2 函数调用二、函数返回值详解2.1 有返

Nginx屏蔽服务器名称与版本信息方式(源码级修改)

《Nginx屏蔽服务器名称与版本信息方式(源码级修改)》本文详解如何通过源码修改Nginx1.25.4,移除Server响应头中的服务类型和版本信息,以增强安全性,需重新配置、编译、安装,升级时需重复... 目录一、背景与目的二、适用版本三、操作步骤修改源码文件四、后续操作提示五、注意事项六、总结一、背景与

在Android中使用WebView在线查看PDF文件的方法示例

《在Android中使用WebView在线查看PDF文件的方法示例》在Android应用开发中,有时我们需要在客户端展示PDF文件,以便用户可以阅读或交互,:本文主要介绍在Android中使用We... 目录简介:1. WebView组件介绍2. 在androidManifest.XML中添加Interne

JavaScript中的高级调试方法全攻略指南

《JavaScript中的高级调试方法全攻略指南》什么是高级JavaScript调试技巧,它比console.log有何优势,如何使用断点调试定位问题,通过本文,我们将深入解答这些问题,带您从理论到实... 目录观点与案例结合观点1观点2观点3观点4观点5高级调试技巧详解实战案例断点调试:定位变量错误性能分

Python与MySQL实现数据库实时同步的详细步骤

《Python与MySQL实现数据库实时同步的详细步骤》在日常开发中,数据同步是一项常见的需求,本篇文章将使用Python和MySQL来实现数据库实时同步,我们将围绕数据变更捕获、数据处理和数据写入这... 目录前言摘要概述:数据同步方案1. 基本思路2. mysql Binlog 简介实现步骤与代码示例1

Go语言网络故障诊断与调试技巧

《Go语言网络故障诊断与调试技巧》在分布式系统和微服务架构的浪潮中,网络编程成为系统性能和可靠性的核心支柱,从高并发的API服务到实时通信应用,网络的稳定性直接影响用户体验,本文面向熟悉Go基本语法和... 目录1. 引言2. Go 语言网络编程的优势与特色2.1 简洁高效的标准库2.2 强大的并发模型2.

深入浅出SpringBoot WebSocket构建实时应用全面指南

《深入浅出SpringBootWebSocket构建实时应用全面指南》WebSocket是一种在单个TCP连接上进行全双工通信的协议,这篇文章主要为大家详细介绍了SpringBoot如何集成WebS... 目录前言为什么需要 WebSocketWebSocket 是什么Spring Boot 如何简化 We

kkFileView在线预览office的常见问题以及解决方案

《kkFileView在线预览office的常见问题以及解决方案》kkFileView在线预览Office常见问题包括base64编码配置、Office组件安装、乱码处理及水印添加,解决方案涉及版本适... 目录kkFileView在线预览office的常见问题1.base642.提示找不到OFFICE组件

Linux下在线安装启动VNC教程

《Linux下在线安装启动VNC教程》本文指导在CentOS7上在线安装VNC,包含安装、配置密码、启动/停止、清理重启步骤及注意事项,强调需安装VNC桌面以避免黑屏,并解决端口冲突和目录权限问题... 目录描述安装VNC安装 VNC 桌面可能遇到的问题总结描js述linux中的VNC就类似于Window