由于本人的习惯,新接触的东西一般先找个简单的历程实现一些简单的功能,然后再在此基础上展开,所以调试参考了众多前辈的文章,在此表示感谢,如果有需要注明出处的地方,请联系我。
由于项目需要使用ARM实现一些数据转发等功能,考虑可能需要记录日志,于是计划项目采用STM32作为主控,原因考虑有以下:
1. STM32是目前资源比较多的ARM。简单的入门可以参考wei xue的教程。
2.价格也比较便宜,很多核心板可以用。
3.开发难度适中,对于之前从裸机(不带系统)或者51上手的人来说,st提供了stm32cubemx这个配置和代码生成工具,极大的简化了配置的过程。
4.集成了FreeRTOS,麻雀虽小,五脏俱全,量级较轻,bug比较可控。
......总之对于拿来入门和基本的使用是比较够的。
进入正题。
本次使用的芯片是STM32F407ZGT,接口为SDIO 4线,普通的TF卡。初始代码全部由STM32CubeMx生成,CubeMx为4.25.1固件cube版本为V1.0,目前CubeMx里面Middleware显示FatFS版本为R0.12c,FreeRTOS版本为9.0.0。使用和谐版MDK作为代码工具。系统的配置可参考weixue,不过用rtos的时候会稍有区别。
然而不得不说,CubeMX的坑还是不少的,其中影响到使用的有以下内容,特此作为记录:
由于项目需要使用ARM实现一些数据转发等功能,考虑可能需要记录日志,于是计划项目采用STM32作为主控,原因考虑有以下:
1. STM32是目前资源比较多的ARM。简单的入门可以参考wei xue的教程。
2.价格也比较便宜,很多核心板可以用。
3.开发难度适中,对于之前从裸机(不带系统)或者51上手的人来说,st提供了stm32cubemx这个配置和代码生成工具,极大的简化了配置的过程。
4.集成了FreeRTOS,麻雀虽小,五脏俱全,量级较轻,bug比较可控。
......总之对于拿来入门和基本的使用是比较够的。
进入正题。
本次使用的芯片是STM32F407ZGT,接口为SDIO 4线,普通的TF卡。初始代码全部由STM32CubeMx生成,CubeMx为4.25.1固件cube版本为V1.0,目前CubeMx里面Middleware显示FatFS版本为R0.12c,FreeRTOS版本为9.0.0。使用和谐版MDK作为代码工具。系统的配置可参考weixue,不过用rtos的时候会稍有区别。
然而不得不说,CubeMX的坑还是不少的,其中影响到使用的有以下内容,特此作为记录:
1. 如使用了FreeRTOS,会要求强制使用DMA模板的Fatfs,所以打开DMA通道,开中断,以及开SDIO中断是必须的。