STM32F103的TIM1和TIM8是高級定時器,可以產生嵌入死區時間的互補PWM波,使用STM32CubeIDE完成相關配置,可以直接生成代碼,輸出帶死區的PWM波。
根據項目需要,單片機需輸出頻率為36kHz,占空比50%,死區時間500ns的互補PWM波,下面使用STM32CubeIDE完成相關配置。
1、選擇時鐘源,這里選擇外部石英晶體作為HSE時鐘源
2、配置系統時鐘為72MHz,高級定時器TIM1和TIM8時鐘由APB2提供,這里APB2等于系統時鐘72MHz
3、這里使用TIM1來產生互補PWM波,TIM1復用功能如下表所示:
我們使用單片機的PA7和PA8引腳作為PWM互補輸出的兩個通道,在STM32CubeIDE里將此兩引腳選擇為TIM1_CH1N和TIM1_CH1
4、點左邊的Timers,選擇Tim1,TIM1 Mode and Configuration下的Mode選項下主要完成以下配置:
**Clock Source **選擇 Internal Clock,使用內部時鐘源;
Channel1 選擇 PWM Generation CH1 CH1N,PWM產生CH1和CH1N,對應上面選擇的引腳PA8和PA7。
5、Configuration選項下主要完成以下配置:
Counter Settings下的配置:
Prescaler 設置為1,預分頻器設置為2-1;
Counter Mode選擇Up,計數模式為向上計數;
Counter Period設置為1000-1,設置計數周期;
auto-reload preload 選擇Enable,開啟自動重裝載。
以上幾項配置主要是設置PWM頻率,計數器從0開始計數,計數到(1000-1),再從0重新開始計數,預分頻器設置為1,則計數器使用的時鐘頻率為72MHz/2 = 36MHz,計數周期為1000×1/36MHz,頻率為36MHz/1000 = 36kHz。
Break And Dead Time Management下的配置:
Dead Time 設置為36,配置死區時間,死區時間36×1/72MHz = 500ns。
PWM Generation Channel 1 and 1N下的配置:
Mode 選擇 PWM Mode 1,選擇PWM產生模式;
Pulse 設置為500,設置占空比,對應上面的Counter Period,此時占空比為Pulse/(Counter Period+1) = 500/1000 = 50%。
其他的選項保持默認值即可。
6、完成以上配置后即可生成代碼,打開生成的代碼,在main.c的TIM1初始化函數MX_TIM1_Init(void)中添加兩行代碼,將PWM開啟。
7、編譯,下載到開發板上,用示波器可以看到輸出的帶死區的互補PWM波形
-
單片機
+關注
關注
6043文章
44622瀏覽量
638518 -
定時器
+關注
關注
23文章
3255瀏覽量
115367 -
STM32F103
+關注
關注
33文章
479瀏覽量
63874 -
PWM波
+關注
關注
0文章
99瀏覽量
16947 -
預分頻器
+關注
關注
0文章
18瀏覽量
8188
發布評論請先 登錄
相關推薦
STM32CubeIDE使用
![<b class='flag-5'>STM32CubeIDE</b>使用](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
STM32 TIM 多通道互補PWM波形輸出配置快速入門
![<b class='flag-5'>STM32</b> TIM 多通道<b class='flag-5'>互補</b><b class='flag-5'>PWM</b>波形<b class='flag-5'>輸出</b><b class='flag-5'>配置</b>快速入門](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
STM32CUBEIDE(6)----printf打印配置
![<b class='flag-5'>STM32CUBEIDE</b>(6)----printf打印<b class='flag-5'>配置</b>](https://file.elecfans.com/web2/M00/7E/AF/pYYBAGOEGGiAZEC7AArPvRdJ82Y193.png)
評論