stm32f10x USB device 编译错误

发布于 2021-03-04 02:26:39

使用stm32f10x使能usb devicedrivers功能后,编译错误:drv_usbd.c(214): error: #20: identifier "PCD_SNG_BUF" is undefined。
经过排查是在drv_usbd.c里的代码段有导致:

#if !defined(SOC_SERIES_STM32F1)
    HAL_PCDEx_SetRxFiFo(pcd, 0x80);
    HAL_PCDEx_SetTxFiFo(pcd, 0, 0x40);
    HAL_PCDEx_SetTxFiFo(pcd, 1, 0x40);
    HAL_PCDEx_SetTxFiFo(pcd, 2, 0x40);
    HAL_PCDEx_SetTxFiFo(pcd, 3, 0x40);
#else
    HAL_PCDEx_PMAConfig(pcd, 0x00, PCD_SNG_BUF, 0x18);
    HAL_PCDEx_PMAConfig(pcd, 0x80, PCD_SNG_BUF, 0x58);
    HAL_PCDEx_PMAConfig(pcd, 0x81, PCD_SNG_BUF, 0x98);
    HAL_PCDEx_PMAConfig(pcd, 0x01, PCD_SNG_BUF, 0x118);
    HAL_PCDEx_PMAConfig(pcd, 0x82, PCD_SNG_BUF, 0xD8);
    HAL_PCDEx_PMAConfig(pcd, 0x02, PCD_SNG_BUF, 0x158);
    HAL_PCDEx_PMAConfig(pcd, 0x83, PCD_SNG_BUF, 0x198);
#endif

往下排查发现:
在文件stm32f1xx_hal_pcd_ex.c中定义以上使用的函数。
以上函数使用基于 USB_OTG_FS和USB两个宏。
实际USB_OTG_FS有定义,USB未定义。
stm32f1xx_hal_pcd_ex.c描述定义了USB后可以使用HAL_PCDEx_PMAConfig这个函数。但drv_usbd.c中只有定义了SOC_SERIES_STM32F1就可以使用HAL_PCDEx_PMAConfig这个函数。但实际从文件上看上STM32F1不会定义USB这个宏。
以上矛盾导致编译错误。不知道是不是配置问题还是其他问题。

查看更多

关注者
0
被浏览
177
1 个回答
flashman2002
flashman2002 2021-03-16

应该是配置出错了,基于stm32的系列芯片,建议使用stm32cubemx进行芯片管脚配置和初始化,详情可查询网站的文档内容。

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友

手机
浏览

扫码手机浏览