为什么我将延时程序搬到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中延时
}
}
为什么不试试神奇的volatile呢
wu1169668869 发表于 2017-4-19 11:06
为什么不试试神奇的volatile呢
你好!这地方跟volatile有关吗?能具体解释下么
页:
[1]