单片机
返回首页

如何在IAR中通过Watch窗口观察局部变量的值

2020-03-31 来源:eefocus

最近在用430开发一款产品,在软件调试的时候发现Watch窗口中无法观察局部变量的值,总是显示,下面通过一个简答的例子说明一下现象:


#include 'msp430g2553.h'


/* Global variable */

unsigned char ReceiveGlobal;


unsigned char addxy(unsigned char x,unsigned char y)

{

  unsigned char z;

  z = x+y;

  return z;

}


void main()

{

  /* Local variable */

  unsigned char Receive0;

  static unsigned char Receive1;

  volatile unsigned char Receive2;


  Receive0 = addxy(0,1);

  Receive1 = addxy(1,2);

  Receive2 = addxy(3,4);

  ReceiveGlobal = addxy(5,6);


  while(1);

}


在while(1)处设一断点,在Debug模式下通过Watch窗口观察变量:
这里写图片描述
现在回过头去看IAR中的”Options — c/c++ compiler — Optimization[ˌɔptimaiˈzeiʃən] — Level” 选项:
这里写图片描述
 Level的缺省值为Low,当我把Level选为None之后,即不执行任何优化时,全局变量、静态局部变量、局部变量的值都可以看到,如下图所示。
 这里写图片描述
 当我把优化等级选为Midium或者High之后,全局变量、静态局部变量、局部变量的值都不可见了。
 这里写图片描述
 结论:要想观察局部变量的值,调试的时候可以把优化等级设为None.


补充几个知识点:
1.堆栈(stack)——由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。
2.静态存储区(static)—— 全局变量和静态变量的存储是放在一块的。初始化的全局变量和静态变量在一块区域;未初始化的全局变量和静态变量在相邻的另一块区域。程序结束后由系统释放。

进入单片机查看更多内容>>
相关视频
  • RISC-V嵌入式系统开发

  • SOC系统级芯片设计实验

  • 云龙51单片机实训视频教程(王云,字幕版)

  • 2022 Digi-Key KOL 系列: 你见过1GHz主频的单片机吗?Teensy 4.1开发板介绍

  • TI 新一代 C2000™ 微控制器:全方位助力伺服及马达驱动应用

  • MSP430电容触摸技术 - 防水Demo演示

精选电路图
  • 家用电源无载自动断电装置的设计与制作

  • 开关电源的基本组成及工作原理

  • 带有短路保护系统的5V直流稳压电源电路图

  • 如何构建一个触摸传感器电路

  • 如何调制IC555振荡器

  • 基于ICL296的大电流开关稳压器电源电路

    相关电子头条文章