高效蜂鳴器驅動法 用定時器掃瞄代替軟體延時

2021-08-26 23:01:50 字數 739 閱讀 7805

上班跟上學果然不一樣,就比如乙個蜂鳴器的驅動,學生時**蜂鳴器的程式倒也直觀:

pwm_set(0x0a,0x80);//pwm0輸出4.24khz,占空比50%

delay_ms(200);//延時200ms

pwm_set(0x0a,0);//pwm0輸出占空比為0        

這樣就是乙個簡單的蜂鳴器響一聲的程式(約200ms)

但是吧,有的時候200ms還是很重要的,雖然我現在還沒這個意識,但是有經驗的人都會知道的,程式最重要的就是高效,哪怕現在編的程式簡單,資源雖然浪費但是執行效果不影響,但假如想做一名專業人士,節能減排的意識不能少;

工作中遇到的師兄教我用定時器法避免延時,挺好的法子,讓他寫部落格吧,他又懶得做,我只好總結一下,也是給自己長長記性,省的忘記了;

1.定時器子程式中,開1ms延時進入一次中斷

void timer0_isr() interrupt 1

2.蜂鳴器驅動子程式

void pwm_boom(void)

}}    

}3.在主程式的while迴圈中一直執行著蜂鳴器驅動程式,在需要的地方將是使能蜂鳴器的標誌位置位就好了

while(1)

{pwm_boom();

if( 任意符合你要驅動蜂鳴器的設定)

//使能蜂鳴器標誌位,響一聲,約200ms

boom_enable = 1;

以上,就是剛學會的避免延時死等的方法驅動蜂鳴器,本人菜鳥,要多多學習,多多學習。

PWM定時器及其蜂鳴器

arm體系結構 pwm定時器及其蜂鳴器 1 一般soc中產生pwm訊號都是靠定時器模組產生的。也就是說soc有個定時器專門生產pwm訊號的。2 pwm pulse wide modulation 脈寬調變 也就是這是一種訊號,這個訊號有特定的波形。3 pwm波形是乙個週期性波形,週期為t,在每個週期...

定時器驅動

想要每次進tick的時間相同如,每秒進100次tick tick想要100次 秒,那乙個tick就是1ms,而系統時鐘頻率是12 000 000 12 000 000hz 100hz,就是時鐘頻率除以tick頻率,翻譯過來就是每秒的時鐘滴答次數 每秒的tick次數等於乙個tick多少次時鐘滴答,然後...

驅動中定時器例子

include include include include include include include include include include include include 包括timer.h標頭檔案 define second major 509 預設的second的主裝置號 s...