OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2950|回复: 2

大神帮看看这是什么问题啊!太奇怪了。

[复制链接]

0

主题

1

帖子

0

精华

新手入门

积分
1
金钱
1
注册时间
2019-9-18
在线时间
0 小时
发表于 2019-9-18 11:11:56 | 显示全部楼层 |阅读模式
1金钱
本帖最后由 xh428 于 2019-9-18 11:13 编辑

首先我希望做的事情出,通过usb采集外部的实时传输的数据,然后通过spi发给别的设备。 我用的是stm32f407芯片。单独跑usbd_init()没有问题。代码如下:
void USBD_Init(USB_OTG_CORE_HANDLE *pdev,
               USB_OTG_CORE_ID_TypeDef coreID,
               USBD_DEVICE *pDevice,                  
               USBD_Class_cb_TypeDef *class_cb,
               USBD_Usr_cb_TypeDef *usr_cb)
{
  /* Hardware Init */
  USB_OTG_BSP_Init(pdev);  

  USBD_DeInit(pdev);

  /*Register class and user callbacks */
  pdev->dev.class_cb = class_cb;
  pdev->dev.usr_cb = usr_cb;  
  pdev->dev.usr_device = pDevice;   

  /* set USB OTG core params */
  DCD_Init(pdev , coreID);

  /* Upon Init call usr callback */
  pdev->dev.usr_cb->Init();

  /* Enable Interrupts */
  USB_OTG_BSP_EnableInterrupt(pdev);
}





正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
1
金钱
1
注册时间
2019-9-18
在线时间
0 小时
 楼主| 发表于 2019-9-18 11:14:31 | 显示全部楼层
int main(void)
{
  __IO uint32_t i = 0;

  /*!< At this stage the microcontroller clock setting is already configured,
  this is done through SystemInit() function which is called from startup
  file (startup_stm32fxxx_xx.s) before to branch to application main.
  To reconfigure the default setting of SystemInit() function, refer to
  system_stm32fxxx.c file
  */

USBD_Init(&USB_OTG_dev,
#ifdef USE_USB_OTG_HS
            USB_OTG_HS_CORE_ID,
#else            
            USB_OTG_FS_CORE_ID,
#endif            
            &USR_desc,
            &USBD_MSC_cb,
            &USR_cb);

        //??Task1
        xTaskCreate((pdTASK_CODE)task1_task,
                                (char*                        ) "task1_task",
                                (uint16_t                ) TASK1_STK_SIZE,
                                (void *                 ) NULL,
                                (unsigned portBASE_TYPE) TASK1_TASK_PRIO,
                                (xTaskHandle*        ) &Task1Task_Handler);
                               
        //??Task2
        xTaskCreate((pdTASK_CODE) task2_task,
                                (char*                        ) "task2_task",
                                (uint16_t                ) TASK1_STK_SIZE,
                                (void *                 ) NULL,
                                (unsigned portBASE_TYPE) TASK2_TASK_PRIO,
                                (xTaskHandle*        ) &Task2Task_Handler);
       
        vTaskStartScheduler();
  while (1)
  {
    if (i++ == 0x100000)
    {
      i = 0;
    }   
  }
}
但是两个任务都不能被调度。但是去掉USBD_Init()里面的USB_OTG_BSP_EnableInterrupt()就可以调度了,但是这不是办法啊。到底什么地方出问题了。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2019-9-19 03:01:28 | 显示全部楼层
帮顶
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-10 00:08

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表