硬件:stm32F407zgt6商乎,sdio接口的sd卡
軟件:rt-thread studio(簡(jiǎn)稱rts),cubemax
目標(biāo):實(shí)現(xiàn)讀寫sk卡
具體步驟:
一禀倔、新建基于芯片的sk卡測(cè)試工程(圖1),測(cè)試引腳使用串口6,下載使用st-link swd模式,具體可根據(jù)自己的板子和硬件選擇。
二、點(diǎn)擊cubemax settings 打開cubemax啥寇,按照?qǐng)D2的步驟進(jìn)行操作,使能sdio硬件洒扎,點(diǎn)擊生成代碼后一定要關(guān)閉cubemax使修改生效辑甜,生效后rts會(huì)彈框提示。.
四袍冷、打開Rt-thread settings 選擇以下組件磷醋,使之生效。
五胡诗、打開board.h,使能BSP_USING_SDIO邓线,然后編譯下載程序后,顯示sk卡硬件掛載成功(圖5)
六煌恢、此時(shí)僅是硬件掛在成功骇陈,還需初始化虛擬文件系統(tǒng)進(jìn)行文件操作,在主程序main函數(shù)while循環(huán)之前中寫入以下代碼瑰抵,然后編譯你雌,會(huì)報(bào)錯(cuò),顯示未初始化成功(圖6)
if(dfs_mount("sd0","/","elm",0,0)==0){
????LOG_I("dfs mounted success");
}else{
????LOG_E("dfs mount error");
}
報(bào)錯(cuò)原因是因?yàn)閟k卡初始化需要一定的時(shí)間二汛,導(dǎo)致dfs初始化的時(shí)候sd卡還未加載匪蝙,解決辦法是點(diǎn)擊dfs_mount函數(shù)跳轉(zhuǎn)到函數(shù)文件中,在函數(shù)第一行加入延時(shí)100ms即可(圖7)
然后再重新編譯下載习贫,顯示dfs初始化成功,輸入ls命令即可看到sd卡中的文件和目錄(圖8),此時(shí)即可使用msh命令對(duì)sk卡中的文件進(jìn)行讀寫操作千元,輸入
?echo "hello? rt-thread" hello.txt
將內(nèi)容寫入 hello.txt苫昌,然后 cat hello.txt命令即可看到文件內(nèi)容,點(diǎn)個(gè)贊吧O(∩_∩)O幸海。
文件系統(tǒng)操作常用的 FinSH 命令如下表所示:
ls ????顯示文件和目錄的信息
cd ????進(jìn)入指定目錄
cp ????復(fù)制文件
rm ????刪除文件或目錄
mv ????將文件移動(dòng)位置或改名
echo ????將指定內(nèi)容寫入指定文件物独,當(dāng)文件存在時(shí)袜硫,就寫入該文件,當(dāng)文件不存在時(shí)就新創(chuàng)建一個(gè)文件并寫入
cat ????????展示文件的內(nèi)容
pwd ????打印出當(dāng)前目錄地址
mkdir ????創(chuàng)建文件夾
mkfs ????格式化文件系統(tǒng)