huangyu_ninbo 发表于 2015-7-7 15:12:23

2812,150M下10个uunsigned int数据排序,居然要18ms。有那么慢?

2812,150M下10个unsigned int数据排序,居然要18ms。有那么慢?

void sequence(unsigned int a[],int n)
{
        int i=0,j=0;
        unsigned int temp=0;

        TEST_IO=0;

        for(i=0;i<n;i++)
        {
                for(j=i+1;j<=n;j++)
                {
                        if(a>a)
                        {
                                temp=a;
                                a=a;
                                a=temp;
                        }
                }
        }
        TEST_IO=1;
}

用示波器观察TEST_IO电平,有18ms。
各位大侠,指点下啦!不是在仿真下跑的。

zhanyanqiang 发表于 2015-7-7 15:49:04

怎么可能》? 肯定哪里错了~~~~

ZL_electric 发表于 2015-7-7 16:02:02

不会,单片机都会比这个快好多,肯定时间没测对

haibaogk 发表于 2015-7-7 16:03:01

仿真下的设计问题,另外这个排序方法也不是最佳的。

huangyu_ninbo 发表于 2015-7-7 16:08:35

多谢楼上两位大侠热心解答。仿真状态下运行也是要那么长时间。
哪里有问题?能帮忙指点下吗?
其他的都好好的。AD驱动、SCIA驱动都好好的。

ZL_electric 发表于 2015-7-7 16:10:39

你是不是按1M或者什么频率运行的,时钟低速运行?你这个排序即使不优化也不会这么慢啊

lingdianhao 发表于 2015-7-7 16:44:30

冒泡法没这么慢吧?会不会被中断打断了.

steaven2000 发表于 2015-7-7 18:15:32

你骗鬼呢,上波形看看啊。另外在开始处把中断关掉。

lyrics131415 发表于 2015-7-8 08:33:59

无图无真相

huangyu_ninbo 发表于 2015-7-8 09:32:01

再次感谢楼上几位大侠热心解答。
在做这个排序之前,我已经把COMA 9600波特率、AD驱动做好了。5ms的定时器做好、测试好了。120M的频率是没有问题的。
上午我又测试了下。不知道是我昨天看错了,还是啥问题。现在排序100个数据,是1.6ms。估计是我昨天看错了。
我把总中断关闭后,运行也是1.8ms。
排序100个数据,从低到高排序,而且数据已经是从低到高了,要1.8ms,这个也不正常吧?

blue.fox 发表于 2015-7-29 07:57:49

确认函数的实参是不是对的
页: [1]
查看完整版本: 2812,150M下10个uunsigned int数据排序,居然要18ms。有那么慢?