stm32發(fā)脈沖
1)速度控制
速度控制目的和模擬量一樣,沒有什么需要關(guān)注的地方
發(fā)送脈沖方式為PWM,速率穩(wěn)定而且資源占用少
stm32位置控制需要獲得發(fā)送的脈沖數(shù),有下面4種手段
1)每發(fā)送一個(gè)脈沖,做一次中斷計(jì)數(shù)
2)根據(jù)發(fā)送的頻率×發(fā)送的時(shí)間,獲得脈沖數(shù)量,對(duì)于變速的脈沖,可以累計(jì)積分的方法來獲得總脈沖
3)一個(gè)定時(shí)器作為主發(fā)送脈沖,另外一個(gè)定時(shí)器作為從,對(duì)發(fā)送的脈沖計(jì)數(shù)
4)使用DMA方式,例如共發(fā)送1000個(gè)脈沖,那么定義u16 per[1001],每發(fā)送一個(gè)脈沖,dma會(huì)從數(shù)組中更新下一個(gè)占空比字,數(shù)組最后一個(gè)字為0,表示停發(fā)脈沖
上面4種方法的用途和特點(diǎn)
1)對(duì)于低速率脈沖比較好,可以說低速發(fā)脈沖的首選,例如10Khz以下的,否則中斷占用太多的cpu,這種方法要注意將中斷優(yōu)先級(jí)提高,否則會(huì)丟計(jì)數(shù),
2)用作定時(shí)的計(jì)時(shí)精確高,可以允許有脈沖計(jì)數(shù)丟失的情況
3)主從方式,需額外的定時(shí)器來計(jì)數(shù),例如tim1發(fā)脈沖 tim2計(jì)數(shù),最方便的方式,無論高速低速即可,同時(shí)占用cpu最低,只是要占用多一個(gè)定時(shí)器
4)DMA方式也算是一個(gè)很確定的方式,不會(huì)丟失脈沖,但是高速的時(shí)候,會(huì)較多的占用內(nèi)部總線同時(shí)會(huì)使用一個(gè)多余的DMA控制器,而且有個(gè)缺點(diǎn),就是使用起來比較復(fù)雜,沒有達(dá)到KISS原則
個(gè)人推薦方式,低速時(shí)中斷方式,如果不知高速還是低速,則使用主從方式。
具體的方式需要根據(jù)資源和需求來確定。
stm32定時(shí)器算是比較復(fù)雜的器件,而且用戶要較多的介入底層,希望將來st公司能夠能夠簡(jiǎn)化器件的使用。
評(píng)論