I use MDK-ARM v5.24.2, CMSIS V5.0.1, MDK-MIDDLEWARE V7.4.1, STM32F4xx_DFP V2.11.0, new a project use the STM32CubeMX of the STM32Cube Framework(API), add a usb host msc to read and write file in the u disk. But I find that: 1. the "Keil::CMSIS Driver:USB Host:Full-speed" require CMSIS:RTOS, but there are two choices: "ARM::CMSIS:ROTS:Keil RTX" and "ARM::CMSIS:ROTS:Keil RTX5", there seems that I can only chose "ARM::CMSIS:ROTS:Keil RTX5" because I have add the "CMSIS::RTOS2(API):keil RTX5". 2. If neither chose ""ARM::CMSIS:ROTS:Keil RTX" nor "ARM::CMSIS:ROTS:Keil RTX5", there is a error after compile: C:\Keil_v5\ARM\PACK\Keil\STM32F4xx_DFP\2.11.0\CMSIS\Driver\USBH_FS_STM32F4xx.c(166): error: #5: cannot open source input file "cmsis_os.h": No such file or directory 3. If chose the "ARM::CMSIS:ROTS:Keil RTX5", there is a error after compile: C:\Keil_v5\ARM\PACK\Keil\MDK-Middleware\7.4.1\FileSystem\Include\fs_os.h(272): error: #81: more than one storage class may not be specified How to fix this? Thanks!
I had the same problem when i was working with Sdcard (MCI driver). My fix was to manually edit fs_os.h (remove its read-only flag first) . I don't know whether it'll work to USB driver or not, but here's what i added into fs_os.h :
// MOD, top line of the file after include "rl_fs_lib.h // ------------------------- #if defined(RTE_CMSIS_RTOS2) #define RTOS_DEFINED #undef RTE_CMSIS_RTOS #endif
// MOD, end of the file // --------------- #if defined(RTOS_DEFINED) #define RTE_CMSIS_RTOS #endif
hope it works for you.