脈沖寬度調(diào)制模式(PWM)可以產(chǎn)生一個(gè)由TIMx_ARR寄存器確定頻率、由TIMx_CCRx寄存器確定占空比的信號(hào)。
??本示例實(shí)現(xiàn) IO 輸出模式–PWM 波形輸出。 以 LED 驅(qū)動(dòng)為例, 使用定時(shí)器高級(jí)功能(PWM 模式), 實(shí)現(xiàn)呼吸燈效果。
1.硬件接口
??本硬件平臺(tái)有3個(gè)LED燈分別為LED2、LED3、LED4LED2接PA1,LED2接PB8,LED4接PB9,硬件原理圖如下:

根據(jù)STM32引腳定義手冊(cè)或者STM32CUbeMX軟件我們可得知定時(shí)器4的CH1和CH2對(duì)應(yīng)外部引腳PB8和PB9。

2 軟件設(shè)計(jì)
??打開STM32CubeMX工具,配置定時(shí)器4,將PB8配置為定時(shí)器4通道3(復(fù)用推挽輸出),PB9配置為定時(shí)器4通道4(復(fù)用推挽輸出)。



3.參數(shù)說明
模式 | 說明 |
Input capture direct mode | 輸入捕獲直接模式 |
Input capture indirectmode | 輸入捕獲間接模式 |
Input capture triggered by TRC | 輸入捕獲觸發(fā)器模式 |
Output compare no output | 輸出比較(凍結(jié)模式000 ) |
Output compare CH3 | 輸出比較(001) |
PWM Generation No output | PWM產(chǎn)生無輸出 |
PWM Generation CH3 | PWM輸出到CH3 |
CH3 Combined channels | 聯(lián)合通道 |
xor activation | 定時(shí)器輸入異或模式 |

4. 代碼生成

PWM模式配置:

PB8、PB9引腳配置和PWM模式使能
HAL_TIM_PWM_Start(timHandle,TIM_CHANNEL_3);//初始化通道3
HAL_TIM_PWM_Start(timHandle,TIM_CHANNEL_4);//初始化通道4
引腳模式配置及PWM初始化

4.呼吸燈主函數(shù)示例
while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
/*實(shí)現(xiàn)呼吸燈*/
if(flag==0)i++;
else i--;
if(i>=300)flag=1;
if(i==0)flag=0;
HAL_Delay(3);
htim4.Instance->CCR3=i;//調(diào)節(jié)占空比
htim4.Instance->CCR4=i;
}
5.HAL庫定時(shí)器常用函數(shù)介紹
HAL庫中定時(shí)器基本功能函數(shù)源碼均在stm32f1xx_hal_tim.c中,高級(jí)功能函數(shù)在stm32f1xx_hal_tim_ex.c中,本小節(jié)主要介紹幾個(gè)常用函數(shù)。(以下列舉函數(shù)可能需要用戶調(diào)用或修改)。
/*硬件層初始化:時(shí)鐘、中斷,DMA*/
void HAL_TIM_Base_MspInit(TIM_HandleTypeDef *htim);
/*中斷方式開啟定時(shí)器*/
HAL_StatusTypeDef HAL_TIM_Base_Start_IT(TIM_HandleTypeDef *htim);
/*DMA方式開啟定時(shí)器*/
HAL_StatusTypeDef HAL_TIM_Base_Start_DMA(TIM_HandleTypeDef *htim, uint32_t *pData, uint16_t Length);
/*開啟定時(shí)器PWM模式*/
HAL_StatusTypeDef HAL_TIM_PWM_Start(TIM_HandleTypeDef *htim, uint32_t Channel);
/*獲取狀態(tài)*/
HAL_TIM_StateTypeDef HAL_TIM_Base_GetState(TIM_HandleTypeDef *htim);
/*中斷方式開啟定時(shí)器輸入捕獲功能*/
HAL_StatusTypeDef HAL_TIM_IC_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel)
6.軟件仿真效果展示
??通過KEIL軟件仿真,查看引腳電平變化,KEIL軟件相關(guān)設(shè)置:
CPU DLL:SARMCM3.DLL
Dialog DLL:DARMSTM.DLL Parameter:-pSTM32F103C8

進(jìn)入仿真模式:

查看引腳電平變化波形:


波形效果:

-
PWM
+關(guān)注
關(guān)注
116文章
5315瀏覽量
217354 -
STM32
+關(guān)注
關(guān)注
2283文章
10986瀏覽量
361297 -
定時(shí)器
+關(guān)注
關(guān)注
23文章
3272瀏覽量
116709 -
呼吸燈
+關(guān)注
關(guān)注
10文章
112瀏覽量
43036 -
kell
+關(guān)注
關(guān)注
0文章
3瀏覽量
2098
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
STM32CubeMx入門教程(3):定時(shí)器的使用

STM32CubeMx入門教程(4):PWM應(yīng)用
基于STM32CUBEMX驅(qū)動(dòng)低壓步進(jìn)器電機(jī)驅(qū)動(dòng)器STSPIN220(3)----定時(shí)器中斷產(chǎn)生指定數(shù)量脈沖

基于STM32CUBEMX的高級(jí)定時(shí)器輸出兩路PWM波
【技術(shù)精選】嵌入式STM32原創(chuàng)征文活動(dòng)精選文章
【MCU】基于STM32CubeMX定時(shí)器中斷實(shí)現(xiàn)LED閃爍

STM32CUBEMX配置教程(十二)STM32的定時(shí)器觸發(fā)的固定頻率ADC采樣(使用DMA)

STM32CUBEMX配置教程(十三)STM32的定時(shí)器觸發(fā)的固定頻率DAC輸出(使用DMA)

【STM32Cube_12】使用通用定時(shí)器產(chǎn)生PWM驅(qū)動(dòng)蜂鳴器

STM32CubeMX實(shí)戰(zhàn)教程(五)——通用定時(shí)器(PWM輸出)

STM32CubeMX_定時(shí)器中斷_PWM

STM32CUbeMX之兩路互補(bǔ)pwm波 以及死區(qū)時(shí)間設(shè)置

STM32CUBEMX開發(fā)GD32F303(12)----輸出PWM及修改PWM頻率與占空比

STM32CUBEMX開發(fā)GD32F303(13)----定時(shí)器TIM捕獲PWM測(cè)量頻率與占空比

評(píng)論