用si4438做無線收發,首先確認spi有沒有問題,沒問題可以做下一步,讀個晶元的暫存器,比如說讀0x01和0x10看看能不能讀成功,讀出來帶有38等字樣的代表成功,能讀成功基本上代表spi是沒有問題的。
接著是配置si4438,配置程式是別人給的,或者wds生成,只要沒問題都ok,關鍵是在初始化流程上,在初始化流程上面犯了以下錯誤:
1、因為是系統是ucos,所以新建了乙個任務,但是出現了問題後來發現是記憶體空間不足,在去掉task任務之後就不會出現指標跑飛跑到堆疊外的問題。
2、少了bsp_intvectset這句會出錯。因為少了這一句所以中斷進不去,得不出資料。
網上說使用uc/os編寫中斷函式和使用stm32硬體函式庫編寫中斷函式是不同的,推薦使用uc/os提供的函式編寫中斷。
3、在rf_init中,
enable_rf_chip(); // 使能射頻晶元
ostimedly(300);
enable_rf_int();
在初始化rf_init中,使能射頻完以後,ostimedly的300延時是必須的,沒有則讀不出來資料。使能射頻晶元後的300ms以後才能開中斷,這個尤為重要。
4、還有一點要值得注意的是,關閉射頻和使能射頻晶元中間也要有乙個時間,具體2ms就可以了。
下圖就是相對應讀裝置狀態位和收回的資料。
一些容易錯的地方
錯誤1.錯因 compileerror 錯誤資訊如下 source main.cpp in function int main source main.cpp 12 error k was not declared in this scope 正確 如下 錯誤2.答案錯誤 輸出結果不對,看看是不是忘...
自己犯的一些低階錯誤整理
1 switch漏寫break case panel roleandsetting break default break 由於漏寫 處的break導致執行到case panel roleandsetting時 curlayer null,進而導致沒有layer被顯示。2 英文拼錯,不多說直接看下圖...
關於錯排的容斥定理的一些心得
賀卡問題 同室四人各寫一張賀年卡,先集中起來,然後每人從中拿一張別人送的賀年卡,則四張不同的賀年卡不同的分配方式有。現在考慮用排除法求出1 2 3 4這四個正整數的錯排的種數,從中摸索出規律.對於四個正整數1 2 3 4,這四個數的全排列數為4 有乙個數不錯排的情況應排除,由於1排在第1位的有3 種...