本週進行stm32 dsp庫的實驗,主要測時fft相關函式是否能正常使用。在測試過程中發現乙個異常現象
mcu:stm32f407(正點原子:探索者開發板); 異常模組:tim8、dma2stream0,adc1;
現象:tim8定時時間改變;
使用tim8計滿溢位事件來觸發adc,在adc轉換完畢後使用dma搬運,取樣頻率為12800,即定時器定時時間。
由於stm32f4主頻配置為168mhz,tim2等通用定時器時鐘**pclk1為匯流排時鐘為42mhz,所以tim2時鐘頻率為84mhz 84m/12800 = 6562.5非整數,所以選用tim8,其時鐘為168mhz可以配成整數(168m/12800=13125),預分頻係數75、自動過載值175,在單獨測試tim8時無異常,頻率為設計頻率12800hz;加上adc也無異常,但是加上dma後就出現問題,tim引數為改變情況下頻率變為設計頻率的1/4即3200hz,最後定位到使能dma無異常,但開啟dma中斷後就會出現降頻,該情況下讀取各匯流排值(sysclk、hclk、hclk1、hclk2)均無異常,但是就是降頻了。
分析配置引數均未改變,無意間更改優化等級從(-o0)改為(-o2),其餘**均為改變,tim定時頻率恢復正常。
由於不太了解編譯過程,所以暫時無法分析不同優化等級下,在二進位制**處到底有何不同,先存個檔。
關於IDE的一點希望
計算機發展了這麼多年,程式發展了這麼多年,和計算機互動的手段卻沒有什麼進步。作為新程式,新軟體開發中起重要作用的開發環境ide雖然說越來越智慧型,誘導,視覺化拖拉,斷點除錯,整合管理。但程式從程式設計師腦中,紙上的程式卻絕大部分只能通過原始的鍵盤輸入計算機,才有後續的處理。計算機行業的目標是用計算機...
關於CPLEX的IDE中文亂碼問題
我使用12.7.1版本的ibm ilog cplex optimization studio window10 在 報錯的時候中文字元會亂碼,如下圖。嘗試了很多方法沒有成功。後來發現在命令列中執行中文不會亂碼。通過這種方法可以先弄懂報錯的原因。具體方法如下 如果有多個執行配置時,首先給需要執行的執行...
Linux下gcc 優化等級的介紹
優化可以說是乙個非常複雜而又非常重要的問題,以筆者多年的linux c開發經驗來說優化通常分為兩個方面,一是人為優化,也就是基於程式設計經驗採用更簡易的資料結構函式等來降低編譯器負擔,二是採用系統自帶的優化模式,也就是gcc o系列,下面我將簡述一下各級優化的過程以及實現。gcc o1 首先o1上面...