采样如下代码,发现串口那边只进行了一次打印。
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");
}
采样如下代码,发现串口那边只进行了一次打印。
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的所有函数,可以实现循环打印的功能。