遇到个奇葩问题,用keil u4 编译个51程序,有些函数不执行?
把这个程序烧到stc12单片机上,串口收到的数据经竟然没有经过加密处理,把key_buf定义成全局的也不行??我确认加密程序没有问题。
难道是编译器把这个子函数忽略了?还是直接优化掉了?
有人遇到过类似问题么?
void RF_Txkey(uchar add,uchar data1,uchar data2,uchar data3) //数据加密发送
{
uchar data key_buf={1,2,3,4,5,6,7,8};
key_buf=data1;
key_buf=data2;
key_buf=data3;
key_buf=add;
//加密上面的数据 ,然后串口发送出去
Encrypt(key_buf,TEAkey);
kinbuf=key_buf;Com_go();
kinbuf=key_buf;Com_go();
kinbuf=key_buf;Com_go();
kinbuf=key_buf;Com_go();
kinbuf=key_buf;Com_go();
kinbuf=key_buf;Com_go();
kinbuf=key_buf;Com_go();
kinbuf=key_buf;Com_go();
}
检查优化选项,有可能是优化掉了。Keil uV2编译选项改一下会出现函数消失的现象。 把编译后的信息贴出来,看看内存什么的,还有就是在什么地方调用! wangyy@dianzi 发表于 2013-8-22 09:27 static/image/common/back.gif
把编译后的信息贴出来,看看内存什么的,还有就是在什么地方调用!
编译提示没有任何关于这个函数的信息。。。 uchar data volitilekey_buf={1,2,3,4,5,6,7,8};会怎样? 优化级别太高了?? volatile uchar data key_buf={1,2,3,4,5,6,7,8}; 不就知道是不是被优化了。
页:
[1]