现象:
在使用emusb-device库时,调用 USBD_Start()时会出现程序异常的情况
分析:
出现这种情况,如果在调用USBD_Start()之前调用cy_retarget_io_init,就不再出现程序异常的情况。也许有人会疑惑这两者为什么会存在一定的关系,原因如下:
可以看到,USBD_Start()默认开始了log功能,会调用到printf。所以如果不init retargetio,printf就会失败。那如何将二者解绑呢?提供其中以一种解决方法:
可以在示例工程的“usbd_config_io.c”中看到以下注释,标准输入输出默认是打开的,如果想要关闭,可以在makefile文件中义“USBD_DISABLE_STANDARD_OUTPUT=1”
只需要在Makefile中添加如下语句即可:
|