㈠ 如何設置stm32的id
1,如果板子上有外部存儲器,可以先編寫一個程序,利用演算法把id計算得到一些值存入外部存儲器,然後再燒寫真正的程序,真正的程序去校驗外部存儲器的數據是否合法即可 2,利用板子上按鍵組合,或是上電按住某些鍵,程序在這個時候利用演算法把id計算得到一些值存入程序區(stm8為EE區),程序運行時去驗證程序區數據是否正確 3,軒微編程器有軟體加密的功能,編程器會讀晶元id,根據演算法直接改寫緩沖區,達到軟體加密的作用 4,讀出的id通過一定演算法,例如異或加上一個數,得到的數據存入flash(只運行一次,運行後標志位也存入flash),下次讀到這個標志位,就不運行這個程序。
四、做軟體加密時注意 1,不要在程序中直接出現id地址,例如STM32:1FFFF7E8 1FFFF7EC 1FFFF7F0 STM8: 0x4865~0x4870 2, 利用校驗和或是crc對程序區進行校驗,防止改程序
㈡ STM32與80C51
要視你的功能而定。
STM32自帶PWM發生器可用於變速控制,12位ADC可用於一些感測器的採集、72M主頻和20k以上RAM方便進行一些演算法分析,比如PID、細分演算法、DSP之類。部分帶DAC這些是小車常用的一些功能。
8051主要是簡單,如果功能簡單8051基本能夠勝任。
㈢ stm32f407和tms320f28335的對比
論壇上看到的比較。
這幾天剛拿到STM32F4的評估板,STM32F4這次的賣點就是FPU和DSP指令集,關注了挺長時間,這次就想測試一下STM32F4的浮點性能,如果滿足就升級自己飛控的架構。本來用STM32F103+28335雙核架構,F28335當浮點處理器用,調試起來比較麻煩,所以一直想換了。
測試代碼就是用的我飛控的演算法,全部使用浮點運算,包含姿態和位置兩個7階和9階的卡爾曼濾波器,包含大量的矩陣運算以及部分導航演算法和PID控制器等,還有部分IF和SWITCH包含跳轉的判定語句,相比純演算法算是一個比較綜合的運算。
測試環境:
F28335:CCS V3.3,使用TI優化的數學庫,不開優化,程序在RAM里執行。
STM32F4:KEIL V4.7,使用ARM優化的數學庫,不開優化。
測試方法:
F28335:在飛控演算法入口設置斷點,清零CCS的CPU計數器(profile->clock),然後STEP OVER,記錄下CPU的計數
STM32F4:在飛控演算法入口設置斷點,記錄下Register窗口內算states計數器,然後STEP OVER,記錄下新的計數器數值,與之前的數值相減得到CPU計數
測試結果:
F28335:253359個CPU周期,除以150MHZ,大約是1.69ms
STM32F4:一共285964個周期,除以168MHZ,大約是1.7ms,比F28335略慢
結論就是,對於包含相對較多跳轉的綜合浮點演算法而言,STM32F4似乎並不慢多少。
拋開架構因素,從純浮點運算方面來看的話。STM32F4的FPU加減乘指令VADD.F32、VSUB.F32、VMUL.F32都是單周期指令,而除法VDIV.F32耗費14個周期。
例如:a = a / b;產生的匯編為:
0x08000220 ED900A00 VLDR s0,[r0,#0x00]
0x08000224 4804 LDR r0,[pc,#16] ; @0x08000238
0x08000226 EDD00A00 VLDR s1,[r0,#0x00]
0x0800022A EE801A20 VDIV.F32 s2,s0,s1
0x0800022E 4803 LDR r0,[pc,#12] ; @0x0800023C
0x08000230 ED801A00 VSTR s2,[r0,#0x00]
復制代碼 F28335: F28335的FPU有加減乘法指令,都是雙周期的,由於沒有硬體除法指令,F28335這里是用軟體模擬的浮點除法,匯編可以看到 LCR $div_f32.asm字樣,需要19個時鍾周期。
例如:a = a * b,產生的匯編為:
0087B2 E203 MOV32 *-SP[4], R0H
0087B4 E2AF MOV32 R1H, *-SP[6], UNCF
0087B6 E700 MPYF32 R0H, R1H, R0H
0087B8 7700 NOP //需要讓流水線等待FPU運算完畢,所以需要NOP
0087B9 E203 MOV32 *-SP[4], R0H
復制代碼 除法:
0087BD E203 MOV32 *-SP[4], R0H
0087BF E2AF MOV32 R1H, *-SP[6], UNCF
0087C1 7640 LCR $div_f32.asm:52:71$
0087C3 E203 MOV32 *-SP[4], R0H
復制代碼 結論:
可見單從浮點處理器來說,F28335是不如F4的FPU的。但是由於F28335是哈佛架構,有較長的流水線,可以在一個時鍾周期里完成讀取,運算和存儲,所以程序連續運行的話,就比ARM快上許多許多,比如執行一次a = a + b只需要5個時鍾周期,但是缺點就是一旦要跳轉,就必須清空流水線,如果是
for(i = 0;i < 1000; i ++)
a = a + b;
復制代碼 這樣的運算,速度反而要比ARM慢(測試下來單次是17周期,ARM是14).所以說這就是ARM和DSP不同的地方了。
看看這次測試比較,感覺環境還是有一定的問題:
1、F28335是在RAM中運行,並且兩者都是在模擬器環境中進行運算,還是離線在Flash中跑比較靠譜。
2、兩者編譯平台一個是CCS,一個是KEIL,對通用語句的優化,有待商榷。
3、ARM和TI的數學庫中,各自支持的運算種類不一樣。
㈣ STM32F407在Keil中找不到Flash演算法是什麼原因
Keil.STM32F4xx_DFP.1.0.8有問題(注意是安裝完成後,可能是病毒搞壞),且硬碟中Keil.STM32F4xx_DFP.1.0.8.pack安裝文件也有問題,卸載MDK,重新安裝MDK,然後從光碟從拷過來Keil.STM32F4xx_DFP.1.0.8.pack重新安裝後,能正常使用。
㈤ stm32和演算法哪個難學
演算法更難一些,因為要涉及更多高深的數學。
stm32主要是偏計算機方面,數學方面涉及的少。
㈥ 做智能小車的路徑規劃演算法,用arino的開發板可以嗎相對於stm32,或者c51開發板怎麼樣
做智能小車的那種路徑是非常劃算的,通過他的那種開發燈板材確實對他的那種呃路徑是有一定的相對應的,是一個非常好的一個路徑。
㈦ STM32車牌識別演算法該怎麼編寫
建議使用matlab,網上搜搜國外有一些demo程序。
---。安.視.寶。---
車輛自動識別是建立在圖像對比組件的基礎上,利用攝像機拍攝車輛運行動態視頻,然後採用先進的神經網路演算法和模糊演算法相結合,通過對視頻流的採集和處理,完成車牌自動識別,自動進行車牌號碼比較,並以文本的格式與進出場數據進行打包保存。
原理介紹:車輛自動識別系統對攝像機抓拍到的每幀圖像都識別,並自動找到最佳識別效果的圖像,應用這種方法可以很好地提高抓拍率、識別率,並且能夠降低工程的施工難度。立林智能網路車牌自動識別正是基於這一思想,採用專有的技術,利用高速的識別演算法核心對視頻流進行逐幀的識別,即對單個車輛進行了多次識別,從而有效克服了現有車輛識別技術存在的許多缺陷。使用連續多幀識別,從工程的角度看,比單幀識別成功的機率要高很多,這是因為連續抓拍的圖像的角度、光照不同,識別效果也不盡相同,從理論上講,只要有一幀足夠清晰的圖像就有一個好的識別結果。立林智能網路車牌自動識別還採用先進的目標跟蹤,以及識別結果最佳化等方法,來確保從車流中一個一個地甄別出序列化的車牌。
要實現對視頻流逐幀識別,必須採用行之有效的高速識別演算法,即神經網路演算法和模糊演算法相結合,否則無法達到實用的效果。對於常用的768×288高解析度圖像,立林智能網路車牌自動識別可以在3到10毫秒內完成全部的識別過程,並且在多個應用中實施了單台計算機多路的實時識別方案。
㈧ stm32 foc2.0不開源
stm32 foc2.0不開源可能是演算法裡面缺少了算式。
STM32 Foc開源演算法,包括觀測器和Foc method,STM32F0系列FOC源代碼,有單電阻采樣和三電阻采樣兩種代碼。
掃描隧道顯微鏡(Scanning Tunneling Microscope, 縮寫為STM)是一種掃描探針顯微術工具,掃描隧道顯微鏡可以讓科學家觀察和定位單個原子,它具有比它的同類原子力顯微鏡更加高的解析度。STM使人類第一次能夠實時地觀察單個原子在物質表面的排列狀態和與表面電子行為有關的物化性質,在表面科學、材料科學、生命科學等領域的研究中有著重大的意義和廣泛的應用前景,被國際科學界公認為20世紀97年代世界十大科技成就之一。隧道針尖的結構是掃描隧道顯微技術要解決的主要問題之一。針尖的大小、形狀和化學同一性不僅影響著掃描隧道顯微鏡圖像的解析度和圖像的形狀,而且也影響著測定的電子態。針尖的宏觀結構應使得針尖具有高的彎曲共振頻率,從而可以減少相位滯後,提高採集速度。如果針尖的尖端只有一個穩定的原子而不是有多重針尖,那麼隧道電流就會很穩定,而且能夠獲得原子級分辨的圖像。針尖的化學純度高,就不會涉及系列勢壘。例如,針尖表面若有氧化層,則其電阻可能會高於隧道間隙的阻值,從而導致針尖和樣品間產生隧道電流之前,二者就發生碰撞。制備針尖的材料主要有金屬鎢絲、鉑-銥合金絲等。鎢針尖的制備常用電化學腐蝕法。而鉑- 銥合金針尖則多用機械成型法,一般 直接用剪刀剪切 而成。不論哪一種針尖,其表面往往覆蓋著一層氧化層,或吸附一定的雜質,這經常是造成隧道電流不穩、噪音大和掃描隧道顯微鏡圖象的不可預期性的原因。因此,每次實驗前,都要對針尖進行處理,一般用化學法清洗,去除表面的氧化層及雜質,保證針尖具有良好的導電性。
㈨ 怎樣對STM32加密,防止被讀出復制
1,如果板子上有外部存儲器,可以先編寫一個程序,利用演算法把id計算得到一些值存入外部存儲器,然後再燒寫真正的程序,真正的程序去校驗外部存儲器的數據是否合法即可
2,利用板子上按鍵組合,或是上電按住某些鍵,程序在這個時候利用演算法把id計算得到一些值存入程序區(stm8為EE區),程序運行時去驗證程序區數據是否正確
3,軒微編程器有軟體加密的功能,編程器會讀晶元id,根據演算法直接改寫緩沖區,達到軟體加密的作用
4,讀出的id通過一定演算法,例如異或加上一個數,得到的數據存入flash(只運行一次,運行後標志位也存入flash),下次讀到這個標志位,就不運行這個程序。
四、做軟體加密時注意
1,不要在程序中直接出現id地址,例如STM32:1FFFF7E8 1FFFF7EC 1FFFF7F0 STM8: 0x4865~0x4870
2, 利用校驗和或是crc對程序區進行校驗,防止改程序