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