硬件用的是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、拷贝必要的文件
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)
|