Note: How to use STM32F07x USB Device library

目前測試跟FreeRTOS v10.0.1 一起,
開啟HAL support 在 stm32f0xx_hal_conf.h 把下面這行 uncomment, 去enabled  USB low level driver
#define HAL_PCD_MODULE_ENABLED

接下來需要加上USB IRQ handler, 按照STM的範例 加在 stm32f0xx_it.c 裡面,
/* Private variables ———————————————————*/
extern PCD_HandleTypeDef hpcd;

void USB_IRQHandler(void)
{
HAL_PCD_IRQHandler(&hpcd);
}
在 main.c 裡面加上 下面三行, 這裡測試HID class device,
/* Init USB Device Library */
USBD_Init(&USBD_Device, &HID_Desc, 0);
/* Register the USB HID class */
USBD_RegisterClass(&USBD_Device, &USBD_HID);
/* Start Device Process */
USBD_Start(&USBD_Device);

然後複製一份 usbd_desc.h/usbd_conf.h 改成你要的
還有引入STM32F0xx USB Library 的USB Core/Class code 這樣就可以

Tips, 實際上還要注意USB Device 用的RAM (endpoint buffer)空間, 要避免RTOS override 不過還沒看這邊只是簡單測試
Update: STM32F0xx 的USB Endpoint buffer 是獨立於系統之外例如 測試的STM32F072RB 是指向 (0x40006000) 在 CMSIS 下的 stm32f072xb.h 內可以找到 #define USB_PMAADDR (APBPERIPH_BASE + 0x00006000)

廣告