• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

请问单片机的main函数是执行一次,还是会反复执行?

ec6e4954e6a3cc09 2019-04-20 浏览量:1364
main()
{
unsigned char i;
motor = 0; //电机停
for(i = 0; i < 100; i ++)
motor = 1; //电机运行一段时间
motor = 0;//电机停
}
按程序逻辑,电机应该是运行一会就停止的,但是下载到板子之后,电机一直运行。
在程序最后加了while死循环之后,电机才运行一会之后停止。
  请问,单片机的main函数不是只执行一次吗?难道会反复执行?​
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 单片机的程序很少这样开发,除非是做测试。

    楼市的理由存在的可能比较大。

    这个有些也是你编程内容和编译器综合问题的原因,其实是跑飞了的一种体现。

    从你的代码上来看,你的main并没有设置return,好的编译应该据此自动添加返回,如果没有添加返回,则程序可能继续执行而跑飞。

    或者添加了返回,但上层调用main的引导部分没有正确设置停机处理,也会跑飞。

    • 发布于 2019-04-20
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:4
  • 这个是程序跳转到其他异常地址导致单片机重启,所以看上一直在循环
    • 发布于2019-04-20
    • 举报
    • 评论 0
    • 0
    • 0

  • 理论上main函数运行完毕后程序会停止 

    但是实际不是的 可能跟固件有关 也可能是单片机本来就是这样设置的

    就是main函数运行完毕后程序会初始化从头开始运行

    就是说 mian函数运行完毕后 不会从main继续运行 而是初始化后继续运行


    • 发布于2019-04-20
    • 举报
    • 评论 0
    • 0
    • 0

  • 单片机的mian函数是一直执行的,如果main函数里面没有while循环,就会反复多次进入main函数,main函数里面的所有内容都会被反复执行
    • 发布于2019-04-21
    • 举报
    • 评论 0
    • 0
    • 0

  • 具体还是要看汇编文件是如何处理 main 函数的。

    现在单片机的 main 函数都是死循环,即使退出了 mian  函数,还是会再进来的。

    • 发布于2019-04-22
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

请问单片机的main函数是执行一次,还是会反复执行?