你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

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

[复制链接]
善良2016 提问时间:2017-4-19 10:51 /
原先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中延时
         }         
}


收藏 1 评论2 发布时间:2017-4-19 10:51

举报

2个回答
wu1169668869 回答时间:2017-4-19 11:06:08
为什么不试试神奇的volatile呢
善良2016 回答时间:2017-4-19 11:21:30
wu1169668869 发表于 2017-4-19 11:06
为什么不试试神奇的volatile呢

你好!这地方跟volatile有关吗?能具体解释下么

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版