目前在用smartarm开发板<br />软件用ADS1.2<br />程序中设置一些全局变量<br /><br />如果在MAIN函数中 对有些全局变量进行写操作的话 程序就跑飞了比如:<br /><br />uint8 r;<br />uint8 j;<br />main()<br />{<br />……<br />j=0;<br />r=0;<br />……<br />}<br /><br />我在主程序中对j变量进行写操作不会跑飞,但是只要对r变量进行写操作就会跑飞<br /><br />后来在网上查说是在MIAN函数中要对该变量用VOLATILE进行声明<br />更改后的函数变成了这样<br />uint8 r;<br />uint8 j;<br />main()<br />{<br />……<br />volatile uint8 r;<br />r=0;<br />j=0;<br />……<br />}<br />这样改后程序就运行正常了<br /><br />但是新的问题也同样出现了<br />如果我对j在程序中也用volatile 进行声明 如下所示<br />uint8 r;<br />uint8 j;<br />main()<br />{<br />……<br />volatile uint8 r;<br />volatile uint8 j;<br />r=0;<br />j=0;<br />……<br />}<br /><br />程序照样会跑飞<br /><br />请教周公是什么原因。<br /><br />另外 我在程序中只对r进行声明的时候(代码如下所示)用JTAG方式跑不会跑飞,但是编译成.bin文件用H-JTAG附带的FLASHER下载或者是编译.hex文件用ISP下载,程序都不能正常执行(编译时候ADS的ARM Linker设置保证不会有错)。<br />uint8 r;<br />uint8 j<br />main()<br />{<br />……<br />volatile uint8 r;<br />r=0;<br />j=0;<br />……<br />}<br />不知道是什么原因 希望周公给与解答 |
|