野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1137|回复: 1

STM32F1-SDIO和USART1冲突

[复制链接]
回帖奖励 10 火花 回复本帖可获得 10 火花奖励! 每人限 1 次
发表于 2023-8-26 22:03:42 | 显示全部楼层 |阅读模式
用的火哥的霸道开发板,在CUBEMX生成的代码,初始化SDIO和USART1后使用重定向的printf会发现串口调试助手打印不出来任何数据

1

1


把printf放在SDIO初始化前就好使了,如下图

2

2


我看配套书籍中SDIO的初始化也是放在后面,请问是SDIO与USART1冲突吗?具体是哪里冲突?求救求救
3.png

4.png
回复

使用道具 举报

 楼主| 发表于 2023-8-27 19:40:43 | 显示全部楼层
查清楚原因了,不是因为SDIO和USART串口冲突,是因为进入了Error_Handler()这个函数中了
野火论坛202308271927479663..png

Error_Handler()中做的工作其实是关中断并且死循环下去,所以导致后面的printf没有打印出来
野火论坛202308271937348273..png

而本问题出自CUBEMX生成的MX_SDIO_SD_Init()的函数中
在CUBEMX中设置的模式是四根线的总线,这个时候MX_SDIO_SD_Init()中的HAL_SD_Init()返回HAL_OK没进入Error_Handler()能接着往下跑,但是到HAL_SD_ConfigWideBusOperation()后返回HAL_ERROR就会进入Error_Handler()中

所以说问题出在了HAL_SD_ConfigWideBusOperation(),翻看野火的配套例程发现,其实是把HAL_SD_Init()前的参数配置hsd.Init.BusWide = SDIO_BUS_WIDE_4B;  改成hsd.Init.BusWide = SDIO_BUS_WIDE_1B;
后面的HAL_SD_ConfigWideBusOperation(&hsd, SDIO_BUS_WIDE_4B)不动就好了



虽然说最后解决了问题,但是还是不知道究竟是什么原因导致这个现象?猜测一波HAL库有BUG
野火论坛202308271932045706..png
回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-23 02:04 , Processed in 0.061669 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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