打印
[STM32F4]

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

[复制链接]
2791|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
今天,发现板子不对劲,出了问题,明明main函数里面没有while循环,可main函数就是会执行三次,我以为工程代码太多哪个环节出问题了,就新建了一个简单再简单不过的工程,只会printf一条语句,结果板子还是打印了三次,搞了好久,找不到突破口,有遇到同样问题的请不吝赐教
    真的很纳闷,网上的说法都说要在结尾加一个while(1), 我是可以打包票,前几天我写的代码都没有while(1)循环,只会执行一次,我有两块板子,一块正点原子的探索板,一块是stm32F4的最小系统板,现在两块板子都出现同样的问题了
    今天这两块板子只做同一件事,就是移植了SDIO驱动,并移植了FAT文件系统,这些驱动不是正点提供的,而是在stm32f4-discovery.net下载的代码,里面有大神自己写的很规范的代码,并且都用到实际项目之中,我就自己移植着来用,看过源码了,无非就是配置了sdio、dma的各个寄存器,和原子提供的代码相似度非常高。可移植完之后,板子就出现自动循环3次这种怪异问题(之后烧写运行其他工程代码也是如此),搞了一天了,真的无从下手,请帮帮忙!  如果大家手头方便可以测试一下,看会不会循环3次
沙发
戈卫东| | 2017-4-21 05:47 | 只看该作者
没有循环就要返回的吧?
这个是不允许的哦
产生的结果依赖你使用的工具

使用特权

评论回复
板凳
740071911| | 2017-4-21 08:41 | 只看该作者
没有循环,加上return 0就好了

使用特权

评论回复
地板
重小楼不吃素|  楼主 | 2017-4-21 10:26 | 只看该作者
戈卫东 发表于 2017-4-21 05:47
没有循环就要返回的吧?
这个是不允许的哦
产生的结果依赖你使用的工具

我是有加return的,忘了说明

使用特权

评论回复
5
戈卫东| | 2017-4-21 18:28 | 只看该作者
重小楼不吃素 发表于 2017-4-21 10:26
我是有加return的,忘了说明

一般来说,单片机程序的main()不允许执行到return那里。

使用特权

评论回复
6
重小楼不吃素|  楼主 | 2017-4-21 21:01 | 只看该作者
戈卫东 发表于 2017-4-21 18:28
一般来说,单片机程序的main()不允许执行到return那里。

是的,了解了,今天去国外论坛提问一下,看看国外友人的见解,他的意思大概是,嵌入式软件不同于PC机下编程,PC下写C语言从main函数返回的话,是会返回操作系统的,所以不会出错。而对于裸机不应该退出MAIN函数,不然会出现错误,这种错误叫with no expectation of returning。
谢谢大家的解答了!

使用特权

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

本版积分规则

1

主题

3

帖子

0

粉丝