2026 / 07 / 22
在 CS+中如何监测宏定义表达的值

Issue:

如果想在CS+的watch panel中监测宏定义的值,该如何配置?比如,以下代码中利用宏定义的变量fg_One,希望在watch panel像监测变量一样监测该宏定义的值。

typedef union
{
    uint16_t word;
    struct
    {
        uint8_t one :1;
        uint8_t two :1;
    }Bits;
}_Mdbs_Usr_Ext;

_Mdbs_Usr_Ext Funcset;

#define fg_One Funcset.Bits.one

void main(void)

{
    fg_One = 1;
    printf("fg_One = %d\n", fg_One);
    while(1);
}

图1   宏定义变量代码示例

 
Answer:

按照CS+手册(https://tool-support.renesas.com/autoupdate/support/onlinehelp/csp/V4.01.00/CS+.chm/DebugTool-RX.chm/Output/db_P_watch.html)中的描述,Watch Panel支持的类型包括以下几类:

variable,function,immediate,expression,I/O register

这些类型均属于标号,指向了某个具体的地址,基于此,调试器可以通过读取相应地址上的数据获得标号的值,并刷新在Watch Panel中。

对于宏定义类型的变量来说,在编译前进行了替换,因此***.map文件中不会有宏定义变量,而是用替换后的标号指示。

在Watch Panel中首先添加宏定义对应的变量标号,然后在相应变量的Memo列增加宏定义的描述,即可实现监测,如下图所示。

 

图2   Watch Panel中监测宏定义的值

 

文件下载
隐私条款

一、接受条款 使用者(也称"您")在访问或使用本网站及其服务时,即已经表示同意并不加修改地接受本《用户协议》、本网站的《隐私声明》、《法律声明》以及其关或相链接的网页和网站的条件和条款的规定。我们强烈建议:在您阅读和接受本《用户协议》时,也应阅读并接受本《用户协议》中所提到《隐私声明》、《法律声明》及其相关或相链接网页或网站所包含的资料,因为《隐私声明》、《法律声明》及其它相关网页或网站可能包含对您适用的进一步规定。(请注意:点击划有底线的词句即可链接到上述《隐私声明》、《法律声明》及其它相关或相链接的网页和网站。

 

二、使用者的资格要求 在本网站中"使用者"指的是浏览、阅读、使用本网站信息或服务的任何个人或组织。本网站的服务仅适用于根据相关法律的规定具有签订有约束力的合同的个人或组织并仅由其使用。本网站的服务不向18周岁以下的个人使用者提供,也不向临时被本网站中止或取消使用者资格的使用者提供。如果使用者不符合本条规定,请停止使用本网站或本网站的服务。

样品
申请

应用
资源

微信