PWM控制LED亮度變化的原理(超詳解)

PWM控制LED亮度變化的原理

通過ARR寄存器來設定預裝載值,以確定循環頻率和週期,計數器寄存器CNT從0開始計數,設定一個CCR寄存器的值,來跟CNT的計數值進行比較,當CNT的值小於CCR寄存器,輸出低電平,當CNT大於CCR的值,小於ARR(還在這一個週期之內),就輸出高電平。

特別注意:這種比較結果是對於PWM2的向上計數而言的,對於PWM1而言是相反的,應該要特別注意!!!!!!!!!
PWM輸出模式有兩個如下
配置相關的寄存器的位是不同的!
在這裏插入圖片描述


當然我們知道,LED得到低電平發光,高電平不發光!
佔空比我們已經知道了,就是高電平的時間佔整個週期的比值,佔空比越高,LED就越暗,所以我們要控制佔空比來控制LED亮暗變化!

在這裏插入圖片描述

來看看正點原子的一段代碼

	while(1)
	{
   
   
 		delay_ms(10);	 
		if(dir)led0pwmval++;
		else led0pwmval--;

 		if(led0pwmval>300)dir=0;
		if(led0pwmval==0)dir=1;			 
		TIM_SetCompare2(TIM3,led0pwmval);		   
	}	 

怎麼來控制呢?看到程序裏面用設置led0pwmval的值來設定佔空比,追根溯源它的那個函數我們看到,它是把led0pwmval(參數爲如圖Compeare2)的值給了CCR,所以我們看到當led0pwmval值不斷從0-300增大時,CCR也不斷增大,這也就意味着,低電平佔的時間越來越多,所以亮度由暗一直到亮,當然這一個脈衝週期可是很短很短的,所以我們只能看到LED的這種亮度變化了。
在這裏插入圖片描述
以上就是PWM控制LED亮度變化的詳細介紹,後續陸續更新,敬請關注!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章