[STM32F1] 初次接触STM32,居然范例程序都跑飞????请大神帮忙解惑

[复制链接]
5823|20
 楼主| woti 发表于 2016-11-22 23:37 | 显示全部楼层 |阅读模式
就是那个闪灯的范例,修改了一点点,3秒就跑飞了???

int main(void)
{
          GPIO_Configuration();
    while (1)
                {
                PCout(13)=1;
                Delay(0xfffff);
          Delay(0xfffff);       
                        Delay(0xfffff);
                        Delay(0xfffff);
                PCout(13)=0;
          Delay(0xfffff);
                        Delay(0xfffff);
                        Delay(0xfffff);
          Delay(0xfffff);       
                PCout(13)=1;
                Delay(0xfffff);
                        Delay(0xfffff);
                        Delay(0xfffff);
          Delay(0xfffff);       
                PCout(13)=0;
          Delay(0x0ffff);
          Delay(0xfffff);
                PCout(13)=1;
                Delay(0x0ffff);
          Delay(0xfffff);       
                PCout(13)=0;
          Delay(0xfffff);
          Delay(0xfffff);       
               
    }
}

原来的程序是这样的:
int main(void)
{
          GPIO_Configuration();
    while (1)
                {
                PCout(13)=1;
                Delay(0xfffff);
                Delay(0xfffff);
                PCout(13)=0;
          Delay(0xfffff);
          Delay(0xfffff);       
       
    }
}

这个就木有问题。

初次接触,还请大神帮忙看看?
 楼主| woti 发表于 2016-11-22 23:39 | 显示全部楼层
百思不得其解,
huzi2099 发表于 2016-11-23 00:17 | 显示全部楼层
你调试一下啊
戈卫东 发表于 2016-11-23 01:04 | 显示全部楼层
能通过编译么?
songchenping 发表于 2016-11-23 08:21 | 显示全部楼层
你为什么要改成这样啊
sky.sun.zz 发表于 2016-11-23 09:55 | 显示全部楼层
重复的代码那么多,为何?
想做大牛的小马 发表于 2016-11-23 10:01 | 显示全部楼层
查一下时钟配置,另delay是通过软件实现,还是systick实现
Rooney30 发表于 2016-11-23 10:49 | 显示全部楼层
delay函数是不是有问题,里面的值太大了?
Artax 发表于 2016-11-23 11:02 | 显示全部楼层
重复的代码太多啦  简化下
 楼主| woti 发表于 2016-11-23 13:54 | 显示全部楼层
void Delay(uint32_t nCount)
{
  for(; nCount != 0; nCount--);
}
这个是延时的代码。就是觉得奇怪,重复多几段,程序就跑飞了
应该不是delay
皈依 发表于 2016-11-23 15:57 | 显示全部楼层
调试一下 看看是死在哪里了
icecut 发表于 2016-11-23 18:22 | 显示全部楼层
黑锅好多
tuezhibang 发表于 2016-11-23 18:57 来自手机 | 显示全部楼层
woti 发表于 2016-11-23 13:54
void Delay(uint32_t nCount)
{
  for(; nCount != 0; nCount--);

这个是延迟
织夜 发表于 2016-11-23 20:36 | 显示全部楼层
huarana 发表于 2016-11-23 20:41 | 显示全部楼层
跑飞了是什么意思 ,总的描述一下吧。
sq0100 发表于 2016-11-23 20:58 | 显示全部楼层
问题就在你这for写法,换种方法:
i= nCout;
while(i--);
sq0100 发表于 2016-11-23 21:00 | 显示全部楼层
我有时调试发现那样写i的步进怎么变成2了,所以后来跑不到i==0,然后就死循环了,你把改成nCount<2,保证OK
lvyunhua 发表于 2016-11-23 21:57 | 显示全部楼层
编译器优化等级改成0
 楼主| woti 发表于 2016-11-25 15:00 | 显示全部楼层
这个是厂家给我的范例
加很多延时是要看 灯的不同的闪烁状态
想不到这么简单的程序还是会跑飞。

就是灯不闪了。。。。
 楼主| woti 发表于 2016-11-25 15:44 | 显示全部楼层
延时改了还是会跑飞。。
void Delay(uint32_t nCount)
{
  while(nCount--);
}
只不过,跑飞的时间要久一些
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

19

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部