查看: 215|回复: 5
收起左侧

[STM32F4] 求助,为何main函数明明没有循环体,主程序会自动执行3次

[复制链接]

1

主题

3

帖子

9

积分

实习生

 楼主| 发表于 2017-4-21 00:18 | 显示全部楼层 |返回版面|阅读模式
今天,发现板子不对劲,出了问题,明明main函数里面没有while循环,可main函数就是会执行三次,我以为工程代码太多哪个环节出问题了,就新建了一个简单再简单不过的工程,只会printf一条语句,结果板子还是打印了三次,搞了好久,找不到突破口,有遇到同样问题的请不吝赐教
    真的很纳闷,网上的说法都说要在结尾加一个while(1), 我是可以打包票,前几天我写的代码都没有while(1)循环,只会执行一次,我有两块板子,一块正点原子的探索板,一块是stm32F4的最小系统板,现在两块板子都出现同样的问题了
    今天这两块板子只做同一件事,就是移植了SDIO驱动,并移植了FAT文件系统,这些驱动不是正点提供的,而是在stm32f4-discovery.net下载的代码,里面有大神自己写的很规范的代码,并且都用到实际项目之中,我就自己移植着来用,看过源码了,无非就是配置了sdio、dma的各个寄存器,和原子提供的代码相似度非常高。可移植完之后,板子就出现自动循环3次这种怪异问题(之后烧写运行其他工程代码也是如此),搞了一天了,真的无从下手,请帮帮忙!  如果大家手头方便可以测试一下,看会不会循环3次
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里 http://open.21ic.com 移步更多21ic独家微课:http://open.21ic.com/list/3/0/0
     

100

主题

7048

帖子

2万

积分

技术总监

发表于 2017-4-21 05:47 | 显示全部楼层 |返回版面
没有循环就要返回的吧?
这个是不允许的哦
产生的结果依赖你使用的工具
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里 http://open.21ic.com 移步更多21ic独家微课:http://open.21ic.com/list/3/0/0
     

12

主题

120

帖子

370

积分

资深技术员

发表于 2017-4-21 08:41 | 显示全部楼层 |返回版面
没有循环,加上return 0就好了
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里 http://open.21ic.com 移步更多21ic独家微课:http://open.21ic.com/list/3/0/0

1

主题

3

帖子

9

积分

实习生

 楼主| 发表于 2017-4-21 10:26 | 显示全部楼层 |返回版面
戈卫东 发表于 2017-4-21 05:47
没有循环就要返回的吧?
这个是不允许的哦
产生的结果依赖你使用的工具

我是有加return的,忘了说明
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里 http://open.21ic.com 移步更多21ic独家微课:http://open.21ic.com/list/3/0/0
     

100

主题

7048

帖子

2万

积分

技术总监

发表于 2017-4-21 18:28 | 显示全部楼层 |返回版面
重小楼不吃素 发表于 2017-4-21 10:26
我是有加return的,忘了说明

一般来说,单片机程序的main()不允许执行到return那里。
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里 http://open.21ic.com 移步更多21ic独家微课:http://open.21ic.com/list/3/0/0

1

主题

3

帖子

9

积分

实习生

 楼主| 发表于 2017-4-21 21:01 | 显示全部楼层 |返回版面
戈卫东 发表于 2017-4-21 18:28
一般来说,单片机程序的main()不允许执行到return那里。

是的,了解了,今天去国外论坛提问一下,看看国外友人的见解,他的意思大概是,嵌入式软件不同于PC机下编程,PC下写C语言从main函数返回的话,是会返回操作系统的,所以不会出错。而对于裸机不应该退出MAIN函数,不然会出现错误,这种错误叫with no expectation of returning。
谢谢大家的解答了!
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里 http://open.21ic.com 移步更多21ic独家微课:http://open.21ic.com/list/3/0/0
您需要登录后才可以回帖 登录 | 注册

本版积分规则

分享 快速回复 返回顶部 返回列表