CH565循环进行SPI0通讯和串口打印只有一次起作用

采样如下代码,发现串口那边只进行了一次打印。

while(1)

   {

      EraseExternal4KFlash_SPI(0);

      BlukWriteExternalFlash_SPI(0,255,SendBuf);

      BlukReadExternalFlash_SPI(0,255,RxdBuf);

      

      for(i=0; i<=255; i++)

      {

         printf("%d ",(UINT16)RxdBuf[i]);

      }

      printf("\r\n打印结束\r\n");   

   }


       记得上次写自己编译的延时函数的时候,延时里面就是空跑数据,也没有起到作用。FAE跟我说的可能代码被优化掉了,会不会这个循环执行串口打印的也会被优化掉,想咨询下FAE,后台优化大概是参照什么标准执行。

       我们自己编写的代码,哪些会被优化,哪些会被保留。是不是存在很大风险,自己无法做出一个有效判断了。


for循环打印数组是我们常用的方式,要注意的是printf内部的处理是有缓冲区概念的,遇到‘\n’才会实际输出,要注意循环的次数不要过多,类似每32、64字节输出一个换行符。

还有就是把SPI相关的操作去掉,排除是否卡在了SPI相关代码中,再看一下程序运行结果。


谢谢,重新修改了下程序,把程序的printf每32个字节,加入一个换行符号,去掉SPI的所有函数,可以实现循环打印的功能。


只有登录才能回复,可以选择微信账号登录