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

STM32调试发现一个很奇怪滴现象,不知道什么原因?

马超飞燕 2017-03-10 浏览量:1033


如下图所示,下载运行后


0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 你说的while(1)是哪个while(1)?是下面那一句还是上面被你注释掉的?还有,你的图我看不出有while的输出是哪些,无while的输出是从哪儿开始的。还有,这两个输出你想说什么问题?上面是我的疑问,下面说我猜测你要表达的问题吧(话说问问题还要人去猜你的问题是什么,太过分了)。你应该是说下面那个while,为什么不加的时候输出是循环一直有的,加上while后就只显示你要输出的几行。你的问题应该是这个吧?我看其他回答的好像没有答道点子上。如果真是那个问题,原因是编译器会自动给main函数加上死循环,由编译器决定的。
    • 发布于 2017-03-12
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:8
  • 为什么不把代码可读性整的高一些,比如像下面这样写

    while(key!=true)

    {

    printf("no SD kard\r\n");

    delay_ms(500);

    key=SD_Initialize();

    }

    • 发布于2017-03-10
    • 举报
    • 评论 2
    • 0
    • 0
马超飞燕 回复了 xukejing :你好,我想知道为什么出现上述现象? 回复
xukejing 回复了 xukejing :SD初始化那个函数好像被你注释掉了,按顺序这么运行下来,就是串口输出“无SD卡”,然后紧跟一个wile(1)的死循环 回复

  • 这是刚上电时,UART没有正常初始化造成的
    • 发布于2017-03-10
    • 举报
    • 评论 0
    • 0
    • 0

  • 刚刚上电的时候,第一句打印出的内容需要无视掉,尤其是你用的这个调试软件,复位之后经常会出一句乱码


    • 发布于2017-03-10
    • 举报
    • 评论 0
    • 0
    • 0

  • 不能啊,这结果是不是反了?
    • 发布于2017-03-10
    • 举报
    • 评论 0
    • 0
    • 0

  • 乱码是因为程序在初始化,你写的printf函数有点重复,建议按xukejing那个用法,当然他的没有对led进行闪烁
    • 发布于2017-03-10
    • 举报
    • 评论 0
    • 0
    • 0

  • 您好,您是純粹測試While(1)的用法吧?

    以這段Code而言沒錯

    無While(1);時候應該有上面那行While(1)所以會一直輸出

    有While1(1);時候上面那行被comment掉了,所以輸出一輪後就進到infinite while loop

    以上是說明

    • 发布于2017-03-10
    • 举报
    • 评论 0
    • 0
    • 0

  • while(1)的这两个用法,你是怎么实现的呢?你说的无while(1);时,那么你上面的while(1){  }应该是不注释的吧。


    一个用法是:while(1);

    注意是有分号的,这个用法就是个死循环,程序会停在while(1);这里,不再运行除中断外的其他程序。


    还有一个用法是while(1){}

    这里有大括号中是你的printf代码,这牙用法会不停的循环运行大括号中的代码,也就是一直不停的输出"无SD卡"了。


    • 发布于2017-03-10
    • 举报
    • 评论 0
    • 0
    • 0

  • 你UART的BUFF是不是没有清除呢
    • 发布于2017-03-12
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

STM32调试发现一个很奇怪滴现象,不知道什么原因?