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

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

2 軟件設(shè)計
??打開STM32CubeMX工具,配置定時器4,將PB8配置為定時器4通道3(復(fù)用推挽輸出),PB9配置為定時器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 | 定時器輸入異或模式 |

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 */
/*實現(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ù)介紹
HAL庫中定時器基本功能函數(shù)源碼均在stm32f1xx_hal_tim.c中,高級功能函數(shù)在stm32f1xx_hal_tim_ex.c中,本小節(jié)主要介紹幾個常用函數(shù)。(以下列舉函數(shù)可能需要用戶調(diào)用或修改)。
/*硬件層初始化:時鐘、中斷,DMA*/
void HAL_TIM_Base_MspInit(TIM_HandleTypeDef *htim);
/*中斷方式開啟定時器*/
HAL_StatusTypeDef HAL_TIM_Base_Start_IT(TIM_HandleTypeDef *htim);
/*DMA方式開啟定時器*/
HAL_StatusTypeDef HAL_TIM_Base_Start_DMA(TIM_HandleTypeDef *htim, uint32_t *pData, uint16_t Length);
/*開啟定時器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);
/*中斷方式開啟定時器輸入捕獲功能*/
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

進入仿真模式:

查看引腳電平變化波形:


波形效果:

-
PWM
+關(guān)注
關(guān)注
116文章
5369瀏覽量
218045 -
STM32
+關(guān)注
關(guān)注
2289文章
11011瀏覽量
362363 -
定時器
+關(guān)注
關(guān)注
23文章
3287瀏覽量
117205 -
呼吸燈
+關(guān)注
關(guān)注
10文章
112瀏覽量
43101 -
kell
+關(guān)注
關(guān)注
0文章
3瀏覽量
2115
發(fā)布評論請先 登錄
STM32CubeMx入門教程(3):定時器的使用

STM32CubeMx入門教程(4):PWM應(yīng)用

基于STM32CUBEMX驅(qū)動低壓步進器電機驅(qū)動器STSPIN220(3)----定時器中斷產(chǎn)生指定數(shù)量脈沖

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

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

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

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

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

STM32CubeMX_定時器中斷_PWM

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

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

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

評論