STM32 PWM控制詳解

2021-10-05 07:39:37 字數 2019 閱讀 6057

#include

"sys.h"

/** 定時器3,可產生四路的pwm輸出,四個通道分別對應的引腳情況如下

tim3_ch1,tim3_ch2,tim3_ch3,tim3_ch4

沒有重映像的對應情況:

pa6,pa7,pb0,pb1

部分重映像:

pb4,pb5,pb0,pb1

完全重映像:

pc6,pc7,pc8,pc9

當我們的io口不僅僅是做普通的輸入輸出使用的時候,作為別的外設(ad,串列埠,定時器等)的特定功能引腳,就需要開啟外設.

這裡我們還需要開啟apb2外設上的復用時鐘afio,同時io口採用的是復用輸出!

我們這裡是沒有使用重對映功能.

*/// 巨集定義

//判斷當前是處於哪一種模式,以便於我們初始化io口

#define no_reamp 0

#define part_reamp 1

#define full_reamp 2

// ---> 這裡是需要制定的引數

//指定這裡的 當前的模式,我們給她預設指定是 沒有重對映

#define current_mode no_reamp

//*************根據當前模式初始化io口 函式

void

my_tim3_gpio_init

(void

) 部分重對映

case part_reamp:

全對映

case full_reamp:

default

:break;}

}/** 初始化定時器的時候指定我們分頻係數psc,這裡是將我們的系統時鐘(

72mhz)進行分頻

* 然後指定重裝載值arr,這個重裝載值的意思就是當 我們的定時器的計數值 達到這個arr時,定時器就會重新裝載其他值.

例如當我們設定定時器為向上計數時,定時器計數的值等於arr之後就會被清0重新計數

* 定時器計數的值被重裝載一次被就是乙個更新(update)

* 計算update時間公式

tout =

((arr+1)

*(psc+1)

)/tclk

公式推導詳解:

tclk是定時器時鐘源,在這裡就是72mhz

我們將分配的時鐘進行分頻,指定分頻值為psc,就將我們的tclk分了psc+

1,我們定時器的最終頻率就是tclk/

(psc+

1) mhz

這裡的頻率的意思就是1s中記 tclk/

(psc+

1)m個數 (

1m=10的6次方)

,每記乙個數的時間為(psc+1)

/tclk ,很好理解頻率的倒數是週期,這裡每乙個數的週期就是(psc+1)

/tclk 秒

然後我們從0記到arr 就是 (arr+1)

*(psc+1)

/tclk

舉例:比如我們設定arr=

7199

,psc=

9999

我們將72mhz (

1m等於10的6次方) 分成了(

9999+1

)等於 7200hz

就是一秒鐘記錄9000數,每記錄乙個數就是1

/7200秒

我們這裡記錄9000個數進入定時器更新(

7199+1

)*(1

/7200)=

1s,也就是1s進入一次更新update*/

//簡單進行定時器初始化,設定 預裝載值 和 分頻係數

void

my_tim3_init

(u16 arr,u16 psc)

//***************** 定時器pwm輸出初始化函式

void

my_tim3_pwm_init

(u16 arr,u16 psc)

//*********************主函式呼叫

intmain()

STM32 PWM原理總結

pwm的工作原理 假如我們要讓乙個led燈由暗到亮,就需要不斷的改變ccrx的值,也就是改變占空比。如果我們改變led燈由暗到亮的速度,我們就需要改變arr的值。pwm配置相關暫存器 使用通用定時器的pwm功能,除了配置一般定時器的方式之外,還需要三種暫存器來控制 捕獲 比較暫存器 timx ccr...

STM32 PWM輸出設定

計數器暫存器 timx cnt 預分頻器暫存器 timx psc 自動裝載暫存器 timx arr 重複次數暫存器 timx rcr 當timx cnt如果timx ccrx中的比較值大於自動重裝載值 timx arr 則ocxref保持為 1 如果比較值為0,則ocxref保持為 0 自動裝載暫存...

STM32 PWM移植排故

硬體更新後,pwm波沒有輸出。1,gpio設定通用推挽輸出用定時器產生方波,用示波器觀察是否正常產生方波。如果正常,硬體無問題,gpio無問題。2,定時器設定計數中斷,在中斷處理函式設定斷點,觀察能否進入斷點,如果能,則定時器模組無問題。晶元有相應定時器。3,檢查配置流程。1 管腳分配注意是否有re...