分类 硬件开发 下的文章
在实现WinUSB时,发现无论如何都无法收到Extended Properties请求。经过一番排查,最终定位问题在usbd_ctlreq.c文件的USBD_StdItfReq
函数中。
问题
将STM32F0的DMA代码移植到STM32H7上时发现DMA ErrorCode寄存器为1,无法正常工作
原因
DMA缓冲区内存被放置在DTCM,最好将DMA缓冲区放在D2域(SRAM1,SRAM2和SRAM3)内,因为D2到D1桥会增加额外的延迟。
#ifdef __GNUC__
#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
#else
#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
#endif
PUTCHAR_PROTOTYPE
{
HAL_StatusTypeDef sd = HAL_UART_Transmit(&huart3, (uint8_t *)&ch, 1, 0xFFFF);
return ch;
}
SDMMC
打开SDMMC2外设,Mode设置为SD 4 bits Wide bus
, 将does the board use uSD transceiver
禁用,时钟设置为32MHz。
FATFS
FATFS选项卡勾选SD Card
选项。这里需要注意:如果你的CODE_PAGE选择了非拉丁语言如中文,它将会生成代码页文件,该文件体积很大,STM32H750VB无法存储下来。会导致编译最后的链接失败。
进入FATFS的Platform Setting选项卡,在这里设置SD插入检测的引脚,将对应引脚GPIO设定为 Input 内部上拉,然后在这个页面选择该引脚即可。