bios 发表于 2019-8-3 10:41:13

谢谢大家,明白了
main()
{
}
这个主程序,就是一个大循环,我一开始没理解到这一点
我在最下面,}前,加了一句while(1);
这下程序可以停下了,谢谢大家上面各位的指点,谢谢

xiaomu 发表于 2019-8-6 08:00:06

本帖最后由 xiaomu 于 2019-8-6 08:58 编辑

void delay(unsigned int a)                  
{            
    unsigned int i;
    while(a- - !=0)
   {
         for(i=0;i < 125; i ++);
      }




}

void main(void )
{      
         led=0;
      delay(1000);
         led =1;
}


/*参考杜洋《单片机魔法编程学校》第一个参考程序, 鸣谢!
最早是在无线电杂志阅读到,19年夏重温*/
我还是认为main()函数只执行一次,想要led闪烁需要加入无限循环语句。

夏国特 发表于 2019-8-6 17:53:46

看看终止代码。
启动代码大家都知道,程序引导到 main() ,但跳出 main() 之后就很少有人关注了,终止代码方式不一样。
有的在最后安排一条复位指令,有的安排一条停机指令,有个输出终止运行的状态信息,有的啥也不做根本就没有这部分。

我这个启动代码在执行完 main() 之后是停在这的。

void __thumb_startup(void)

{
                // Setup registers
                __init_registers();


                // setup hardware
                __init_hardware();


                //        zero-fill the .bss section
                zero_fill_bss();


                //      initialize the floating-point library

#ifdef __VFPV4__

                __fp_init();

#endif

                //        call C++ static initializers
                __call_static_initializers();


                // initializations before main, user specific
                __init_user();


                //        call main(argc, &argv)
                exit(main(0, argv));


                //        should never get here

                while (1);
}

另一个BOOTLOADER 的在做完IAP之后是重启或者重映射加载到APP里去。

所以具体还是要看启动代码(或者终止代码)。
页: 1 [2]
查看完整版本: 请教各位,while程序有疑惑,请帮忙!