[STM32F0] 临睡一问while,流水线的关系吗?Optimization=Level 3(-o3)有影响?

[复制链接]
2296|6
 楼主| 290399937 发表于 2014-4-27 21:55 | 显示全部楼层 |阅读模式
本帖最后由 290399937 于 2014-4-28 18:31 编辑

        DCD_EP_Tx (&USB_Device_dev, CDC_IN_EP,tbuf,255);                 
                        
        tbuf[0]=USB_Device_dev.dev.in_ep[CDC_IN_EP& 0x7F].xfer_len;
        tbuf[1]=USB_Device_dev.dev.in_ep[CDC_IN_EP& 0x7F].xfer_len>>8;
                        
        while(0!=USB_Device_dev.dev.in_ep[CDC_IN_EP& 0x7F].xfer_len)
        {
                delaynop();        // 注释掉这一个延时,就会 while死循环
                                        //此函数内容是        uint32_t iw;for(iw=0;iw<1;iw++);
                                        //把内容拉过来直接for延时(不调用函数的形式)也会 while死循环
                                           //这是为什么呢   
               
        }

捕获2.PNG
捕获.PNG
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
airwill 发表于 2014-4-28 07:41 | 显示全部楼层
编译器优化的结果. 看执行的效果是不是一样呢?
现在的编译器优化的效率很高, 往往让编程者都想不到.
细想想, 通常效果是一样的. 而比你想象得还要简练.

评分

参与人数 1威望 +3 收起 理由
290399937 + 3

查看全部评分

mmuuss586 发表于 2014-4-28 08:11 | 显示全部楼层
仿真的时候程序跟你去看看呗。

评分

参与人数 1威望 +3 收起 理由
290399937 + 3

查看全部评分

weiyuliang 发表于 2014-4-28 08:39 | 显示全部楼层
一般先去查找自己程序的问题,然后在去怀疑编译器。

评分

参与人数 1威望 +3 收起 理由
290399937 + 3

查看全部评分

 楼主| 290399937 发表于 2014-4-28 18:02 | 显示全部楼层
weiyuliang 发表于 2014-4-28 08:39
一般先去查找自己程序的问题,然后在去怀疑编译器。

你好:
已更新 调试图2张,望有空看一下.谢谢
 楼主| 290399937 发表于 2014-4-28 18:31 | 显示全部楼层
weiyuliang 发表于 2014-4-28 08:39
一般先去查找自己程序的问题,然后在去怀疑编译器。

你好:
已更新 调试图2张,望有空看一下.谢谢
 楼主| 290399937 发表于 2014-4-28 18:31 | 显示全部楼层
airwill 发表于 2014-4-28 07:41
编译器优化的结果. 看执行的效果是不是一样呢?
现在的编译器优化的效率很高, 往往让编程者都想不到.
细想 ...

你好:
已更新 调试图2张,望有空看一下.谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

15

主题

355

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部