
原先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有关吗?能具体解释下么