硬件:stm32F407zgt6,sdio接口的sd卡
软件:rt-thread studio(简称rts),cubemax
目标:实现读写sk卡
具体步骤:
一、新建基于芯片的sk卡测试工程(图1),测试引脚使用串口6,下载使用st-link swd模式,具体可根据自己的板子和硬件选择。
二、点击cubemax settings 打开cubemax,按照图2的步骤进行操作,使能sdio硬件,点击生成代码后一定要关闭cubemax使修改生效,生效后rts会弹框提示。.
四、打开Rt-thread settings 选择以下组件,使之生效。
五、打开board.h,使能BSP_USING_SDIO,然后编译下载程序后,显示sk卡硬件挂载成功(图5)
六、此时仅是硬件挂在成功,还需初始化虚拟文件系统进行文件操作,在主程序main函数while循环之前中写入以下代码,然后编译,会报错,显示未初始化成功(图6)
if(dfs_mount("sd0","/","elm",0,0)==0){
LOG_I("dfs mounted success");
}else{
LOG_E("dfs mount error");
}
报错原因是因为sk卡初始化需要一定的时间,导致dfs初始化的时候sd卡还未加载,解决办法是点击dfs_mount函数跳转到函数文件中,在函数第一行加入延时100ms即可(图7)
然后再重新编译下载,显示dfs初始化成功,输入ls命令即可看到sd卡中的文件和目录(图8),此时即可使用msh命令对sk卡中的文件进行读写操作,输入
echo "hello rt-thread" hello.txt
将内容写入 hello.txt,然后 cat hello.txt命令即可看到文件内容,点个赞吧O(∩_∩)O。
文件系统操作常用的 FinSH 命令如下表所示:
ls 显示文件和目录的信息
cd 进入指定目录
cp 复制文件
rm 删除文件或目录
mv 将文件移动位置或改名
echo 将指定内容写入指定文件,当文件存在时,就写入该文件,当文件不存在时就新创建一个文件并写入
cat 展示文件的内容
pwd 打印出当前目录地址
mkdir 创建文件夹
mkfs 格式化文件系统