本次專案中遇到了定時器的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...