完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我用STM32CUBE 创建 一个 USBH FREERTOS
我缺省有3个线程 /* Create the thread(s) */ /* definition and creation of defaultTask */ osThreadDef(defaultTask, StartDefaultTask, osPriorityNormal, 0, 512); defaultTaskHandle = osThreadCreate(osThread(defaultTask), NULL); /* definition and creation of commTask */ osThreadDef(commTask, StartCommTask, osPriorityIdle, 0, 512); commTaskHandle = osThreadCreate(osThread(commTask), NULL); /* definition and creation of LedTask */ osThreadDef(LedTask, StartLedTask03, osPriorityIdle, 0, 512); LedTaskHandle = osThreadCreate(osThread(LedTask), NULL); 我看 STM32CUBE 是在 StartDefaultTask 新创建了一个 USBH 的线程 #if (USBH_USE_OS == 1U) #if (osCMSIS < 0x20000U) /* Create USB Host Queue */ osMessageQDef(USBH_Queue, MSGQUEUE_OBJECTS, uint16_t); phost->os_event = osMessageCreate(osMessageQ(USBH_Queue), NULL); /* Create USB Host Task */ #if defined (USBH_PROCESS_STACK_SIZE) osThreadDef(USBH_Thread, USBH_Process_OS, USBH_PROCESS_PRIO, 0U, USBH_PROCESS_STACK_SIZE); #else osThreadDef(USBH_Thread, USBH_Process_OS, USBH_PROCESS_PRIO, 0U, 8U * configMINIMAL_STACK_SIZE); #endif /* defined (USBH_PROCESS_STACK_SIZE) */ phost->thread = osThreadCreate(osThread(USBH_Thread), phost); #else /* Create USB Host Queue */ phost->os_event = osMessageQueueNew(MSGQUEUE_OBJECTS, sizeof(uint32_t), NULL); /* Create USB Host Task */ USBH_Thread_Atrr.name = "USBH_Queue"; #if defined (USBH_PROCESS_STACK_SIZE) USBH_Thread_Atrr.stack_size = USBH_PROCESS_STACK_SIZE; #else USBH_Thread_Atrr.stack_size = (8U * configMINIMAL_STACK_SIZE); #endif /* defined (USBH_PROCESS_STACK_SIZE) */ USBH_Thread_Atrr.priority = USBH_PROCESS_PRIO; phost->thread = osThreadNew(USBH_Process_OS, phost, USBH_Thread_Atrr); #endif /* (osCMSIS < 0x20000U) */ #endif /* (USBH_USE_OS == 1U) */ 我单步执行过,创建都是成功的 但是 USBH_Process_OS 函数就是进不去 然后我用 osThreadList(ucD);函数检测 ,发现 是 USBH 这个线程 阻塞了 我尝试过把3个线程变成一个,这个线程里面为osDelay延时空循环,都不行 不知道哪位大侠能指点一二 |
|
相关推荐
1个回答
|
|
0, 512);
commTaskHandle = osThreadCreate(osThread(commTask), NULL); /* definition and creation of usbhTask */ osThreadDef(usbhTask, StartUsbhTask, osPriorityIdle, 0, 512); usbhTaskHandle = osThreadCreate(osThread(usbhTask), NULL); 其中StartUsbhTask代码如下: void StartUsbhTask(void const * argument) { /* USER CODE BEGIN StartUsbhTask */ osDelay(2000); //delay 2s for USB initialization MX_USB_HOST_Init(); /* USB Host Background task */ for(;;) { /* USB Host Background task */ USBH_Process(&hUSB_Host); osDelay(5); } /* USER CODE END StartUsbhTask */ } 在主函数中第一时间启动 usbhTask,但是 usbhTask 在 USBH_Process(&hUSB_Host);这个函数进不去,只能进入void StartUsbhTask(void const * argument) 因此usb设备一直检测不到 怎么解决呢 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1100 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1118 浏览 1 评论
551 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
417 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1004 浏览 2 评论
1595浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
264浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
279浏览 3评论
248浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
241浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-8-17 10:25 , Processed in 0.770648 second(s), Total 49, Slave 43 queries .
Powered by 电子发烧友网
© 2015 www.ws-dc.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号