打印
[STM32F1]

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

[复制链接]
5250|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 | 只看该作者
能通过编译么?

使用特权

评论回复
5
songchenping| | 2016-11-23 08:21 | 只看该作者
你为什么要改成这样啊

使用特权

评论回复
6
sky.sun.zz| | 2016-11-23 09:55 | 只看该作者
重复的代码那么多,为何?

使用特权

评论回复
7
想做大牛的小马| | 2016-11-23 10:01 | 只看该作者
查一下时钟配置,另delay是通过软件实现,还是systick实现

使用特权

评论回复
8
Rooney30| | 2016-11-23 10:49 | 只看该作者
delay函数是不是有问题,里面的值太大了?

使用特权

评论回复
9
Artax| | 2016-11-23 11:02 | 只看该作者
重复的代码太多啦  简化下

使用特权

评论回复
10
woti|  楼主 | 2016-11-23 13:54 | 只看该作者
void Delay(uint32_t nCount)
{
  for(; nCount != 0; nCount--);
}
这个是延时的代码。就是觉得奇怪,重复多几段,程序就跑飞了
应该不是delay

使用特权

评论回复
11
皈依| | 2016-11-23 15:57 | 只看该作者
调试一下 看看是死在哪里了

使用特权

评论回复
12
icecut| | 2016-11-23 18:22 | 只看该作者
黑锅好多

使用特权

评论回复
13
tuezhibang| | 2016-11-23 18:57 | 只看该作者
woti 发表于 2016-11-23 13:54
void Delay(uint32_t nCount)
{
  for(; nCount != 0; nCount--);

这个是延迟

使用特权

评论回复
14
织夜| | 2016-11-23 20:36 | 只看该作者

使用特权

评论回复
15
huarana| | 2016-11-23 20:41 | 只看该作者
跑飞了是什么意思 ,总的描述一下吧。

使用特权

评论回复
16
sq0100| | 2016-11-23 20:58 | 只看该作者
问题就在你这for写法,换种方法:
i= nCout;
while(i--);

使用特权

评论回复
17
sq0100| | 2016-11-23 21:00 | 只看该作者
我有时调试发现那样写i的步进怎么变成2了,所以后来跑不到i==0,然后就死循环了,你把改成nCount<2,保证OK

使用特权

评论回复
18
lvyunhua| | 2016-11-23 21:57 | 只看该作者
编译器优化等级改成0

使用特权

评论回复
19
woti|  楼主 | 2016-11-25 15:00 | 只看该作者
这个是厂家给我的范例
加很多延时是要看 灯的不同的闪烁状态
想不到这么简单的程序还是会跑飞。

就是灯不闪了。。。。

使用特权

评论回复
20
woti|  楼主 | 2016-11-25 15:44 | 只看该作者
延时改了还是会跑飞。。
void Delay(uint32_t nCount)
{
  while(nCount--);
}
只不过,跑飞的时间要久一些

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

19

帖子

0

粉丝