STM32F103RC用PB0引腳輸出PWM波形

2021-09-29 21:23:37 字數 1479 閱讀 3578

本次專案中遇到了定時器的pwm功能,之前沒有使用過這個功能,除錯好後做以下記錄。

我使用的是stm32f103rct6微控制器,使用了pb0引腳。工程需求是通過pb0的pwm輸出50hz,占空比可調的波形。

理論部分不多說,網上有很多好的資源,以及st官方的文件描述的很詳盡。

stm32 pwm功能,可以引用乙個:

下面貼上測試的**

#ifndef __stm32f10x_h

#define __stm32f10x_h

#include "stm32f10x.h"

#endif

#ifndef __z_hardware_pwm_h

#define __z_hardware_pwm_h

#include "z_hardware_pwm.h"

#endif

int main()

驅動c**如下:

#ifndef __z_hardware_pwm_h

#define __z_hardware_pwm_h

#include "z_hardware_pwm.h"

#endif

void init_hardware_pwm(uint16_t arr, uint16_t psc)

void func_pwm_enable(void)

void func_pwm_disable(void)

void func_set_pwm_compare(uint8_t rate)//, uint16_t psc

if(rate > 100)

func_pwm_enable();

tmp = tmp * rate / 100;

tim_setcompare3(tim3, tmp);

}

驅動的**件如下:

#ifndef __stm32f10x_h

#define __stm32f10x_h

#include "stm32f10x.h"

#endif

void init_hardware_pwm(u16 arr, u16 psc);

void func_pwm_enable(void);

void func_pwm_disable(void);

void func_set_pwm_compare(u8 rate);

按照上述檔案,即可以現實pb0埠的pwm輸出,通過 func_set_pwm_compare(70); 來設定占空比。

需要注意的是 使用的埠,是對應哪個定時器的那個通道的。例如 tim_oc3init(tim3, &tim_ocinitstructure);//tim_oc3的設定,設定了pb0使用定時器3通道3。

stm32f103rc定時器中斷

stm32的定時器分為很多類,按照功能的不同可以分為 systick 定時器的計數器是向下遞減計數的,計數一次的時間 tdec 1 clkahb,當重灌 載 寄 存 器 中 的 值 valueload 減 到 0 的 時 候 產 生 中 斷 可 知 中 斷 一 次 的 時 間 tint valuel...

STM32F103 PB3 作為 普通IO使用

花了一堆時間除錯,要將pb3作為輸入口使用,查了很多文章,試了一下午,終於 rcc apb2periphclockcmd rcc apb2periph afio,enable 必要 rcc apb2periphclockcmd rcc apb2periph gpiob,enable 必要 gpio ...

解決STM32F103微控制器PB4無法拉低的問題

最近使用stm32f103的微控制器,pb4接了乙個led燈,低電平點亮,發現程式沒有辦法拉低pb4。而同樣電路的pb5 就能輸出低電平。通過檢視資料手冊,發現pb4預設是jtag引腳,並置於上拉模式,所以沒法直接當做普通的io口拉低。rcc apb2periphclockcmd rcc apb2p...