在STM32CubeMX中生成USB HID固件代码 CubeMX GUI可以分配引脚功能并生成USB的代码。 开始时,我只需要在Pinout浏览窗口中启用USB FS 2.0功能。 我还想测试通过按键进行USB远程唤醒,所以将PA0分配到EXTI0,你可以在引脚分布视图看到:
在开发过程中,可以在示波器上观察的测试点是超级有用的,所以我将PA1分配给GPIO输出。 我认为SWD半主机通讯速度太慢了,所以我改用UART2来输出SW跟踪消息。 在8位采样位过采样时,我可以从这个外设输出6M的波特率,但是我的FT232R USB到串行转换芯片只能达到3 Mbit / s,所以我将外设限制到3 Mbps,如下图所示。
如果要使用uint8_t类型作为跟踪传输,则必须将字长增加到8位(不算奇偶校验位)。 如果使用NUCLEO开发板板,ST-Link VCOM端口,其在Windows计算机显示一个COMx设备,使用其VCOM端口,是一个更好的方式 - 虽然我不知道它最大支持多少波特率。
然后我通过menu --> Project --> Generate code生成代码。 我必须复制(并在必要时替换)一些文件到我刚刚在上一节中创建的Blinky项目,通过拖放将文件放到Eclipse项目浏览器中。 ● Inc / * - > include / ● Src / *→src /。删除现有的Timer.c和Blink.c,因为我们不会再使用闪烁LED了。 ● Drivers/ STM32F0xx_HAL_Driver / Inc / *(包括Legacy /文件夹) - > system / include / stm32f0-stdperiph /。注意,HAL头在名称中有“_hal_”。 ● Drivers/ STM32F0xx_HAL_Driver / Src / * - > system / src / stm32f0-stdperiph /。删除现有的源文件(名称中没有“_hal_”的源文件),因为现在不需要它们了。 ● Drivers/ CMSIS / Device / ST / STM32F0xx / Include / *.h - > system / include / cmsis / ● Drivers/CMSIS/Device/ST/STM32F0xx / Source/Templates /system_stm32f0xx.c - > system / src / cmsis / ● Drivers/CMSIS/Device/ST/STM32F0xx/ Source/ Templates/ gcc / startup_stm32f042x6.s - > system / src / cmsis / startup_stm32f042x6.S。扩展名从“.s”更改为“.S”是必需的,因为Eclipse CDT希望汇编文件扩展名为“.S”。 ● Middleware / ST / STM32_USB_Device_Library / Core / Inc / * - > include / ● Middleware / ST / STM32_USB_Device_Library / Core / Src / * - > src / ● Middleware / ST / STM32_USB_Device_Library / Class / CustomHID / Inc / * - > include / ● Middleware / ST / STM32_USB_Device_Library / Class / CustomHID / Src / * - > src /
USB中间件文件是必需的,因为我想使用ST的USB中间件。 最初,我试图将文件夹Middlewares / ST / STM32_USB_Device_Library /复制到项目根目录,但是GNUARMeclipse项目模板不会为我复制的STM32_USB_Device_Library文件夹生成递归构建规则。 图像我将切换到一个Makefile到最后,我只是通过将源单独复制到现有的include /和src /文件夹。
CPP文件需要芯片定义,所以我在项目属性中添加了一个新的符号“STM32F042x6” - > C / C ++ Build - > Settings - > Cross ARM C Compiler - > Preprocessor to all build configurations(Debug and Release) 。通过这个更改,项目再次构建,我可以从调试器运行FW。 但由于我没有焊接USB接口,并不会发生什么事情。 很容易焊接USB接口,最耗时的部分是找出D + / D-引脚(3和2,它们在USB标准A型连接器的中间;引脚1是Vbus,当你直看电缆的时候在连接器的右手边)。
我将D-连接到PA11(NUCLEO开发板CN3的14脚),将D +连接到PA12(CN3的5脚)。 当需要从Vbus为原型提供电源时才会连接Vbus线缆我。 现在我应该能够将这个FW连接到主机PC,但在我使用USB HID之前,插入SW跟踪库到项目中 - 因为我预计第一次时他不能正常工作。 |