[STM32H7]

请教:把USB_MSC工程合并到LTDC工程失败

[复制链接]
53|2
手机看帖
扫描二维码
随时随地手机跟帖
dsyq|  楼主 | 2025-1-21 11:10 | 显示全部楼层 |阅读模式
      硬件用的是STM32H750XB 这款MCU,参考的是广西的反客科技的而开发板。

      因项目需要,想做一个带液晶屏显示的BOOTLOADER,实现这样的功能:在系统启动后,如果检查到液晶屏被摁下,就进入读U盘文件,对QSPI存储的应用程序进行升级。      反客科技已经提供了LTDC工程,能驱动屏幕显示,也能检测触摸收入,所以只需要把USB_MSC加进去就可以了。我也用STM32CubeMX配置USB_HOST工程,能够识别U盘。但是把后者合并到LTDC这个工程后,就不灵了。

      1、时钟树方面,PLL配置我尽可能和LTDC配置成一样,把USB的时钟源配置为HSI48时钟,
           RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE|RCC_OSCILLATORTYPE_HSI48;
           RCC_OscInitStruct.HSI48State = RCC_HSI48_ON;
           ...
           PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_LTDC|RCC_PERIPHCLK_USART1|RCC_PERIPHCLK_FMC|RCC_PERIPHCLK_USB;  
           PeriphClkInitStruct.UsbClockSelection = RCC_USBCLKSOURCE_HSI48;
           ...
       2、stm32h7xx_hal_conf.h文件
           #define HAL_HCD_MODULE_ENABLED
       3、拷贝必要的文件
             111.png
        4、main.c中
             增加
             MX_USB_HOST_Init();
             MX_FATFS_Init();               


             ...

             大循环中,
                     while (1)
                {
                    MX_USB_HOST_Process();
                }
            这样做了,系统可以正常启动,但一旦在USB口插入U盘,MCU就直接死机。

            我现在也没什么调试工具,就是:
            #define USBH_DEBUG_LEVEL      1U
         ---
         附上三个工程的文件:
        独立的LTDC工程: 01 独立的LTDC驱动工程.zip (2.59 MB)

使用特权

评论回复
dsyq|  楼主 | 2025-1-21 11:11 | 显示全部楼层
我也网上搜索了下,说中断优先级、堆栈分配等,我都调整了,但是没用。

使用特权

评论回复
dsyq|  楼主 | 2025-1-21 13:58 | 显示全部楼层
解决了!

在stm32h7xx_it.c增加了:

void OTG_FS_IRQHandler(void)
{
  HAL_HCD_IRQHandler(&hhcd_USB_OTG_FS);
}

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

57

主题

628

帖子

10

粉丝