我将之前的407的录音放音移植到f429的版本上,对比了usb_app usb_device usb_driver的驱动文件基本没什么差别。但是把usb库文件移植过去之后报了一些错误。我不是很理解。
报错的内容是“..USBSTM32_USB_OTG_Driverincusb_defines.h(121): warning: #47-D: incompatible redefinition of macro "DSTS_ENUMSPD_HS_PHY_30MHZ_OR_60MHZ" (declared at line 281 of "..HALLIBSTM32F4xx_HAL_DriverIncstm32f4xx_ll_usb.h")”
我检查了大部分usb_core.h宏定义都和stm32f4xx_ll_usb.h有重复。但是429自带的声卡历程编译是ok的。我看了编译的索引路劲也是一样的。预编译的宏我直接copy声卡的预编译。f429的声卡工程是怎么规避这个问题的不甚了解。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
429例程里面用的是HAL库,HAL库已经集成了USB了,分为PCD和HCD,但是这两个用起来改动太大。所以429例程中还是沿用了老版本的专用的USB驱动,但是正如前面所说的,由于HAL库已经内置了USB的驱动,所以相关的宏定义也已经定义了,这个时候你再把老版本的针对STD库的USB驱动文件移植过来的话肯定会提示很多重复定义的!
解决的方法很简单:不要HAL库中的USB驱动,HAL库中的所有有关USB的.c文件都不要添加进工程。然后取消掉文件stm32f4xx_hal_conf.h中的宏定义HAL_HCD_MODULE_ENABLED和HAL_PCD_MODULE_ENABLED。这样HAL中有关USB的东西就全部被排除在外了,如果还有重复定义错误的话就看一下是哪个东西在哪些文件中重复定义了,删掉其中的一个就可以了。
一周热门 更多>