學習筆記:
脈沖寬度調制(PWM),是英文“Pulse Width Modulation”的縮寫,簡稱脈寬調制,是利用微處理器的數字輸出來對模擬電路進行控制的一種非常有效的技術,廣泛應用在從測量、通信到功率控制與變換的許多領域中。
實踐1-pwm-led閃爍
要求產生周期為200ms,占空比為50%的PWM信號來控制led燈。
1.cubemax配置
由原理圖可知,led引腳復用為tim5
周期為200ms,占空比為50%,Tim5掛在APB1總線上,CLK = 84MHZ;假設PSC =8399,根據公式ARR = 1999,CRR = 1000.
生成代碼
main.c 添加
/* USER CODE BEGIN 2 */
HAL_TIM_PWM_Start(&htim5,TIM_CHANNEL_1); //啟動定時器5通道1輸出周期為200ms,占空比50%得PWM信號。
/* USER CODE END 2 */
將代碼下載到開發板中,實驗結果led每隔100ms閃爍。
實踐2-PWM-呼吸燈
周期改為20ms,因為大于50hz使人眼不會察覺出閃爍現象。
占空比從0%-100%反復,從而實現呼吸燈。
根據公式可得,PSC=8399,ARR=199。
占空比從0%開始,所以CRR 的初值為 0,根據公式計算CCR = 200時,占空比為100%。
生成代碼
mian.c 修改
/* USER CODE BEGIN 2 */
uint16_t i =0; //CCR
uint16_t step = 10; //步進值,使呼吸效果明顯
HAL_TIM_PWM_Start(&htim5,TIM_CHANNEL_1);//啟動定時器5的通道1產生PWM
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
/* USER CODE END WHILE */
//知識點:在for/while等循環內部定義的變量屬于局部變量,當for循環結束以后,局部變量就會被銷毀
for(i=0;i<=200;i = i+step)
{
__HAL_TIM_SET_COMPARE(&htim5,TIM_CHANNEL_1,i);
HAL_Delay(200);
}
/* USER CODE BEGIN 3 */
}
實驗現象,出現呼吸燈效果并反復。
-
led
+關注
關注
242文章
23277瀏覽量
660874 -
led燈
+關注
關注
22文章
1592瀏覽量
108000 -
PWM
+關注
關注
114文章
5186瀏覽量
213939 -
STM32
+關注
關注
2270文章
10900瀏覽量
356012 -
微處理器
+關注
關注
11文章
2263瀏覽量
82450 -
功率控制器
+關注
關注
0文章
27瀏覽量
12345 -
脈沖寬度調制
+關注
關注
7文章
81瀏覽量
13727 -
PWM波
+關注
關注
0文章
99瀏覽量
16857
發布評論請先 登錄
相關推薦
評論