hi TIer
我现在的工作环境是startware,启动模式为uart,通过uart加载了boot代码后,再通过uart加载应用程序。
应用程序如下:
#include<stdio.h>
static volatile unsigned int debug_num = 0x00;
void main()
{
UARTPuts("\r\n debug_num:", -1);
UARTPutHexNum((unsigned int)(debug_num));
UARTPuts("\r\n", -1);
}
出现一个比较奇怪的问题,串口输出的debug_num值并不为初始化的值,而是一个随机值(每次加载值都是有变化的)
大家可以测试一下。请问一下这是GCC的编译选项设置产生的问题还是什么其他的原因。
BTW:内存肯定是没有问题的,在代码中任何位置对debug_num赋值都是正确的。
Jian Zhou:
把volatile去掉试一下,或者每次加载代码用仿真器跟一下看看赋值情况。
yihao wang:
回复 Jian Zhou:
去掉volatile是一样的。仿真器没有用,用的是uart加载,不是jatg加载。
Steven Liu1:
建议跟一下这个UARTPutHexNum的代码实现,是不是打印成地址了?