高階定時器 PWM互補輸出

2021-08-21 03:27:11 字數 1824 閱讀 7639

一、程式設計要點

1、初始化tmi相關gpio

2、初始化時基結構體

3、初始化比較輸出結構體

4、初始化死區剎車結構體

5、編寫呼吸燈函式

二、結構體&庫函式

1、時基結構體 

typedef struct

tim_timebaseinittypedef;

2、比較輸出結構體

typedef struct

tim_ocinittypedef;

3、初始化死區剎車結構體

typedef struct

tim_bdtrinittypedef;

三、tim相關計算

1、pwm波頻率計算

f = tim_clk/

tim_clk=72m

arr(自動重裝載的值)-> tim_period

pcs(時鐘預分頻器) -> tim_prescaler

2、占空比計算

占空比=tim_pulse/tim_period
四、程式原始碼

1、advanced_tim.h 檔案

#ifndef __advabced_h

#define __advabced_h

#include "stm32f10x.h"

#define rcc_apbx_clock    rcc_apb2periphclockcmd

#define rcc_apbx_periph   rcc_apb2periph_gpioa|rcc_apb2periph_gpiob

#define rcc_apb2_timx rcc_apb2periph_tim1

#define advanced_timx tim1

#define timx_psc          (9-1)

#define timx_arr          (80-1)

#define timx_pulse     0

#define tim_ch1_pin gpio_pin_8

#define tim_ch1_port gpioa

#define tim_ch1n_pin gpio_pin_13

#define tim_ch1n_port         gpiob

#define tim_bkin_pin gpio_pin_12

#define tim_bkinn_port         gpiob

void tim_advanced_init(void);

#endif //__advabced_h

2、advanced_tim.c 檔案

#include "advanced_tim.h"

static void advanced_tim_gpioconfig(void)

static void advanced_tim_mode_config(void)

void tim_advanced_init(void)

3、main.c檔案

#include "stm32f10x.h"  

#include "bsp_led.h"

#include "usart.h"

#include "advanced_tim.h"

int main(void)

else

}}

TIM高階定時器(2)輸出比較(互補輸出)

輸出比較 用以輸出pwm訊號或脈衝訊號 輸入捕獲和輸出比較的暫存器共用,具體看初始化時的配置 輸出比較有8種模式,其中,只有pwm輸出模式最常用。pwm輸出就是對外輸出脈寬 即占空比 可調的方波訊號,訊號頻率由自動重灌暫存器arr的值決定,占空比由比較暫存器ccr的值決定。ccr既是捕獲暫存器,也是...

R4 STM32高階定時器筆記之PWM互補輸出

通過兩個gpio,輸出相反的pwm訊號,帶死區時間和剎車控制。pwm為50 要配置幾個暫存器 cnt計數器 ccr輸出比較暫存器器 輸入捕獲暫存器 arr自動重裝載暫存器 最大65535 當cqt開始計數 從高電平開始 小於ccr為高電平,等於ccr時跳變低電平。再計數,計數到等於arr,計數器清零...

定時器pwm輸出模式小結

對於pwm輸出模式共有以下幾種模式 tim ocmode timing tim ocmode active tim ocmode inactive tim ocmode toggle tim ocmode pwm1 tim ocmode pwm2 首先是 看說明書中的解釋 tim ocmode 函式...