善良2016 发表于 2017-4-19 10:51:57

为什么我将延时程序搬到RAM中运行,反而变慢了?

原先delay()在主循环中演示闪灯的,后来搬到RAM中运行,发现闪灯变慢了,怎么会在RAM中运行反而比flash中更慢??

以下是一段小的测试代码:
unsigned long i=0,count=80000;
int _fctcpy(char name);
#pragma section (CODE_IN_RAM)
void Delay(void)
{
   for(i=0;i<count;i++);
}
#pragma section ()
main()
{
       
        unsigned char x=0;
       
        _fctcpy('C');
        Init_Clock(); //初始化时钟配置
        Init_GPIO(); //        初始化GPIO配置
        while (1)
   {
//                if(GPIO_ReadInputPin(GPIOG, GPIO_PIN_2)==0x04)//PG2按键检测为高电平 ,按键闭合,为0电平
                if((GPIO_ReadInputData(GPIOG)&GPIO_PIN_2)==0x04) //PG2按键检测为高电平 ok
               x=0;
                else if(x==0) //PG2按键检测为下降沿,认为有一次按键
          {
                        x=1;
                       
                        if(count==80000)count=80000; //输出频率切换
                        else count=80000;
                }               
               
                GPIO_WriteReverse(GPIOI, GPIO_PIN_0);//LED按指定频率闪烁
                Delay();
//                for(i=0;i<count;i++);   //注释上句Delay, 此句有效,代码在flash中延时
       }       
}


wu1169668869 发表于 2017-4-19 11:06:08

为什么不试试神奇的volatile呢

善良2016 发表于 2017-4-19 11:21:30

wu1169668869 发表于 2017-4-19 11:06
为什么不试试神奇的volatile呢

你好!这地方跟volatile有关吗?能具体解释下么
页: [1]
查看完整版本: 为什么我将延时程序搬到RAM中运行,反而变慢了?