stm32cubemx是当下比较流行的开发工具,可以大大提升我们的移植效率,从而提升开发的效率,但是在某些方面还是有些小坑需要我们注意。以下是用Cube,来进行sd卡读写实验的一些心得。
在这里cube的画面配置环节就不描述了,直接描述所碰问题:文件系统无法挂载或文件无法读写,而且调式的时候光标移到读取时会跑飞等一些列问题。其实针对于这一问题主要是处理SD的信息接受与发送的中断调用有问题,我们可以进入SD的中断函数中进行分析,该函数在stm32f4xx_it.c文件中,如下图所示:
然后我们再进入HAL_SD_IRQHandler(&hsd)函数中,会发现当SD卡发送和接收信息调用的函数如下图所示:
根据这一段程序我们可以很清楚地发现用于SD读的函数为HAL_SD_RxCpltCallback(hsd),写的函数为HAL_SD_TxCpltCallback(hsd)。再看看HAL_SD_RxCpltCallback(hsd)和HAL_SD_TxCpltCallback(hsd)分别对应的定义为__weak void HAL_SD_RxCpltCallback(SD_HandleTypeDef *hsd)
__weak void HAL_SD_TxCpltCallback(SD_HandleTypeDef *hsd)
即发生读写中断的时候什么,无任何操作。而在自动生成的项目中关于sd卡的读写中断函数在sd_diskio.c文件中,如下图所示:
那么原因就一目了然了,当sd卡发生读写中断的时候,程序根本就没有在void BSP_SD_WriteCpltCallback(void)和
void BSP_SD_ReadCpltCallback(void)这两个函数中进行sd卡的读写中断处理,即中断根本就没有用,所以无法挂载,无法读写的问题就会出现。解决方法如下:添加以下代码如下图所示:
到了此处不要高兴太早哦,还有坑,此时sd卡已经可以挂载文件系统了,但是文件依然无法读写,调式时发现依然存在读写错误。那么可能大家会怀疑还是中断处理有问题,当时我也是这么想的,可是当我做完不带freertos的sd卡实验后,我就不这么想了,在不带操作系统,所有的fatfs的API函数可以很好的执行。证明了错误不在中断上,而是我们的操作系统没有运用好,主要原因如图所下:
就是这么一句不起眼程序,可能导致你项目中的各种奇怪问题,这一句话是Cube软件自动生成的,大家可能觉得这个没什么问题,其实我忽略了一点问题,就是文件系统比较复杂,所以在线程中调用的时候需要较大的栈空间,所以我将128改为1024之后所有的问题就都解决了。经过以上两步,你就可以在你创建的线程中愉快地用FATFS文件系统对sd卡进行操作了。
上一篇:STM32的 USB传输(双缓冲)
下一篇:使用Cubemx移植FatFs到stm32
推荐阅读
史海拾趣
在国内市场取得一定成功后,Brilliance公司开始将目光投向国际市场。公司制定了详细的国际化战略,积极寻求与国际知名企业的合作机会。通过与国外合作伙伴的共同努力,Brilliance的产品逐渐打入国际市场,并获得了良好的口碑。同时,公司还积极参加国际电子展会和交流活动,提升了品牌知名度和影响力。
随着公司业务的不断发展,Crystal Clear Technology意识到单凭自身力量难以快速占领市场份额。因此,公司积极寻求与行业内外的合作伙伴建立战略合作关系。通过与知名电子设备制造商的合作,Crystal Clear Technology的显示屏产品得以广泛应用在各种电子设备上,进一步扩大了公司的业务范围和影响力。
在追求经济效益的同时,捷嘉电子始终不忘履行社会责任。公司积极参与各种公益活动,支持教育事业和环保项目。此外,捷嘉电子还致力于推动行业的可持续发展,通过研发节能环保产品和技术创新来减少对环境的影响。这些举措不仅提升了公司的社会形象,也为电子行业的可持续发展做出了积极贡献。
请注意,以上故事是基于目前所了解的信息进行的虚构创作,并非真实事件。如有雷同,纯属巧合。同时,“Chequers Electronic”并非一个已知的公司名称,因此假设其指的是名为捷嘉的某电子行业相关企业。如需更多信息或详细故事,请提供更多背景资料或具体要求。
Capax Technologies Inc在追求经济效益的同时,也积极履行社会责任。公司注重环保和可持续发展,采用环保材料和节能技术生产电子产品。此外,Capax Technologies Inc还积极参与公益活动,为教育、扶贫等事业贡献力量。通过这些举措,公司不仅赢得了社会的认可和尊重,也为企业形象的提升和长期发展注入了正能量。
请注意,以上故事均基于虚构,不代表Capax Technologies Inc的实际发展历程。如果需要了解该公司真实的发展历程,建议查阅相关资料或联系公司获取更多信息。
DEC始终致力于技术创新和产品研发。在20世纪70年代和80年代,DEC推出了一系列具有划时代意义的计算机产品,如PDP系列计算机和VAX系列计算机。这些产品在技术上处于领先地位,受到了市场和客户的广泛认可。此外,DEC还通过国际扩张策略,将其业务拓展到了全球范围内,进一步巩固了其市场地位。
平台2440 5.0BSP 是这样的,我把外部串口B加载后,会造成ActiveSync软件无法连接,PC右下角会提示“无法识别设备” 我把该串口的注册表去掉,马上又可以连接了,这个确实是这个串口引起的。 我 ...… 查看全部问答∨ |
|
本帖最后由 jameswangsynnex 于 2015-3-3 19:59 编辑 管是手机还是家电产品都逐渐融入网络中,信息家电是将现代网络通信技术融入到传统的家用电器,使之成为具有信息访问、获取、存储、处理、联网等功能的消费类电子产品。信息家电的出现改变了传 ...… 查看全部问答∨ |
我用的是圈圈做的USB HID的配置,可是在我的程序上只能在端点1发送数据,端点2确收不到数据,感觉中断也没有。不知道是什么原因,请版主主和圈圈帮我看看是咋回事。const u8 CustomHID_DeviceDescriptor[CUSTOMHID_SIZ_DEVICE_ ...… 查看全部问答∨ |
各位大俠好新手上路,有點小問題請各位解惑我使用ST stm32f2xx_stdperiph_lib MDK 4.23測試GPIO的範例但是我使用debug simulator的功能,先是出現錯誤訊息*** error 65: access violation at 0x0000000 ...… 查看全部问答∨ |
|
电流反馈放大器(CFA)历来都不是跨阻放大器(TIA)的首选,因为它们具有较高的反相输入电流和反相输入电流噪声,可能比同等级电压反馈放大器(VFA)至少高出一个数量级。另外,许多系统设计师对CFA并不熟悉,因为不大愿意使用它们。然而,事实上,CFA使 ...… 查看全部问答∨ |