IAR公司提供的开发调试环境Embedded Workbench支持MSP430单片机的C语言或汇编语言程序调试,并且能够进行软硬件仿真,是开发MSP430单片机应用的有力武器,但是在使用中也发现一些问题。
在IAR Embedded Workbench中函数或宏调用中的变量,需要把它定义为全局变量,例如下面程序中调用宏S(r)的float area浮点变量,要定义为全局变量程序才能正常运行。
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
#include "io430.h"
//带参数的宏定义
#define PI 3.14
#define S(r) PI*(r)*(r)
float area; //全局变量
void main()
{
int r;
r=3;
area = S(r);//调用宏
}
如果把该变量如下面程序中那样定义为局部变量,则会出现如下的提示:
Warning[Pe550]: variable "area" was set but never used F:\MSP430程序\test\main.c 10
同时程序也不能正常运行。
#include "io430.h"
//带参数的宏定义
#define PI 3.14
#define S(r) PI*(r)*(r)
void main()
{
int r;
float area; //局部变量
r=3;
area = S(r); //调用宏
}
同样的在把函数作为表达式调用时,所用的变量也要定义为全局变量,如下面程序中的变量k调用函数int GetMax(int x,int y),如果把它定义为局部变量也会出现上面所说的提示,且程序不能正常运行。
//函数作为表达式调用
int GetMax(int x,int y);
int k;
int main( void )
{
// Stop watchdog timer to prevent time out reset
WDTCTL = WDTPW + WDTHOLD;
int m,n;
m=9;
n=10;
k = GetMax(m,n); //调用函数
}
int GetMax(int x,int y)
{
if(x>=y) return x;
else return y;
}
我试验了IAR Embedded Workbench的V3.40和V4.20两种版本,结果都是这样。不知道对不对,但是在秦龙编著的“MSP430单片机C语言应用程序设计实例精讲”一书中这里的变量设置都是局部变量。
文章评论(0条评论)
登录后参与讨论