打印

程序问题

[复制链接]
1289|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yszong|  楼主 | 2012-6-27 22:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我做的是usb设备,用仿真器仿真的,编译通过,倒是调试时遇到问题
这是延时2us的
void delay2us()
{
uint i;
for (i=DELAY_START_VALUE; i!=0; i--);
}
但是下面的delay2us()第一个能通过,第二个在运行到for(i=DELAY_START_VALUE; i!=0; i--);时就卡住了
沙发
yszong|  楼主 | 2012-6-27 22:43 | 只看该作者
void CH375_WR_CMD_PORT(uchar cmd)
{
delay2us();
CH375_CMD_PORT=cmd;
delay2us();
}
如果我把第二个 delay2us()屏蔽了,后面再用到延时2us,还是回运行不下去。郁闷ing,大家帮帮小弟……


}

使用特权

评论回复
板凳
zhaoxqi| | 2012-6-27 22:45 | 只看该作者
这种函数没有实际操作,很容易被优化掉。

使用特权

评论回复
地板
zhenykun| | 2012-6-27 22:45 | 只看该作者
建议修改仿真编译软件的优化等级试试。

使用特权

评论回复
5
yszong|  楼主 | 2012-6-27 22:46 | 只看该作者
哦,还能?

使用特权

评论回复
6
zhenykun| | 2012-6-27 22:47 | 只看该作者
或者在for循环里加入NOP指令

使用特权

评论回复
7
zhanghqi| | 2012-6-27 22:49 | 只看该作者
void delay2us()
{
uint i;
for (i=DELAY_START_VALUE; i!=0; i--);
//     _nop_();  // FOR循环中没有Nop是很容易被优化掉的
}

使用特权

评论回复
8
yszong|  楼主 | 2012-6-27 22:49 | 只看该作者
嗯,知道了、

使用特权

评论回复
9
4565324| | 2012-6-28 16:11 | 只看该作者
有可被优化在部分

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

830

主题

11379

帖子

4

粉丝