晶元:stm32f767igt6
儲存:讀卡器+2g/8g 卡,u盤
檔案系統:fatfs r0.12a
作業系統:ucosii v1.30.02
參考:正點原子例程
使用的其他外設:sdio,網路lwip,sdram,usb從裝置,ltdc
u盤f_mount有時掛載不上,在掛載處,err返回值是0x01,根據返回值數值可確定是fr_disk_err,
有時掛載上了,f_open或者f_write返回fr_disk_err
如圖
有時卡死,卡死的**是f_mount或者f_open或者f_write或者f_read。一直在fatfs的某個迴圈中,具體哪個我忘記了,只知道有個返回**是msc_read_busy。
有時掛載不上,有時能掛載上,但是在其他地方出錯,比較沒規律,特別的是會卡死一直返回
造成假象是我以為是移植進fatfs時的底層函式,disk_read那裡出了問題,因為進入後最終是disk_read那裡返回值錯誤。
u盤的列舉函式usbh_process不宜太快,因此這裡是1ms一次。
由於使用了ucosii,進入中斷前和退出中斷必須加入這兩條語句,因此usb中斷**更改為:
重點處usb_handle_init的作用是進行usb的初始化,如下
因此,將它注釋掉,改為在main函式中呼叫(其實在起始任務也可以,但是不要關中斷去初始化usb)
由於對usb不熟悉,因此在這裡拋磚引玉。
u盤的列舉不宜太快執行,要有間隔時間,且usb初始化時會進行usb硬體的檢測,其中會進行一些通訊而進入中斷,由於關中斷後初始化不會進入usb中斷通訊,因此出現問題。
當然ucosii進入中斷還是遵循其使用原則,加入那兩個函式。
通過以上解決了此問題,能正常使用。當然不一定出現這個錯誤就能適用,希望能給遇到類似問題的同行進行參考。
STM32 外部中斷 易出錯總結
前言 這些問題都是我之前在工作中遇到的,後來覺得需要總結,自己記憶不好,所以在這個給自己打個mark。一 觸發方式 stm32 的外部中斷是通過邊沿來觸發的,不支援電平觸發 二 外部中斷分組 stm32 的每乙個 gpio 都能配置成乙個外部中斷觸發源,stm32 通過根據引腳的序號不同將眾多中斷觸...
stm32碼盤感測器 STM32編碼器介面模式
1.編碼器 圖1 編碼器示意圖 圖1為編碼器的示意圖,中間是乙個帶光柵的碼盤,光通過光柵,接收管接收到高電平,沒通過,接收到低電平。電機旋轉一圈,碼盤上有多少光柵,接受管就會接收多少個高電平。2.stm32編碼器介面模式 暫存器 stm32的編碼器介面模式在stm32中文參考手冊中有詳細的說明。圖2...
stm32 奇怪的位賦值問題 出錯了
1 在51微控制器裡 下面這兩種操作方法都是一樣的,沒有什麼問題!1 out1 r1 是微控制器的乙個io口 dat是傳進來的乙個資料 if dat 0x80 0 out1 r1 0 0是不亮,1是亮 else out1 r1 1 2 out1 r1 dat 0x8000 stm32裡,這樣操作不行...