各位前辈大神你们好,我最近买了一块tiny210v2开发板在用官方提供的代码做裸机实验(放音实验22.audio)时遇到了些小问题,下面我说一下我的问题,在把audio.bin和WindowsXP.wav通过loadb分别下载到0x21000000和0x22000000地址(下载环节是没问题的)下载进去之后只能偶尔运行成功,通过烧入linux系统侧得硬件是没问题的的,我个人觉得应该是哪个地方没初始化成功或者通信失败等原因造成的,然后我通过在代码中添加printf()打印查找代码卡在哪个地方,通过printf观察到代码停在了初始化wm8960 (audio.c)的函数调用void iic_write(int slave_addr, int addr, int data)函数中,在大量的尝试中我很偶然的发现在这个函数的return之前加上个printf(“”)打印时就问题解决了,现在我很疑惑的就是在return前加printf(“”)打印输出在代码中间起到了什么作用,并且发现添加地方也有范围限制必须是在I2CDS0 = (data & 0x00FF); 和return之间?还有printf(“”)放的位置不同编译出来的执行文件大小会发生改变。小弟在此静候大神解答,谢谢!