日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

stm32f4 输出pwm波_stm32的pwm输出代码及注释

發(fā)布時間:2024/9/15 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 stm32f4 输出pwm波_stm32的pwm输出代码及注释 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

stm32是非常常用的單片機。脈沖寬度調制(PWM),是英文“Pulse WidthModulation”的縮寫,簡稱脈寬調制,是利用微處理器的數(shù)字輸出來對模擬電路進行控制的一種非常有效的技術。

就是用一連串的脈沖信號(PWM信號)代替正弦信號。其具有諧波小,響應快的優(yōu)點。

這項技術可用于led的亮度調節(jié),也可以用于電機調速,用途非常廣泛。今天,就向大家分享一下pwm輸出的代碼,都有注釋,便于入門者學習。

代碼及注釋如下:

#include "stm32f10x.h"

void GPIO_TimPWM(void)

{

GPIO_InitTypeDef GPIO_InitStructure;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA , ENABLE);//

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7; //TIM_CH2 GPIOA_Pin_7輸出

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //復用推挽輸出

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_Init(GPIOA, &GPIO_InitStructure); //不解釋

}

void TIM3_Configuration(void)

{

TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;

TIM_OCInitTypeDef TIM_OCInitStructure;

RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); //使能TIM3

//假如我要產(chǎn)生50Hz占空比為50%的PWM波,方便控制舵機

//設置方法:

//系統(tǒng)默認時鐘為72MHz,預分頻71+1次,得到TIM3計數(shù)時鐘為1MHz

//計數(shù)長度為19999+1=20000,可得PWM頻率為1M/20000=50Hz

//具體設置可參考上面的設置方法,簡單明了!

TIM_TimeBaseStructure.TIM_Prescaler = 72-1;//網(wǎng)上多數(shù)設置有誤

TIM_TimeBaseStructure.TIM_Period = 20000-1;

TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;

//設置時鐘分割: TIM_CKD_DIV1 = 0,PWM波不延時(延時破壞占空比?待考證)

TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //TIM向上計數(shù)模式

TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);

TIM_ARRPreloadConfig(TIM3, DISABLE); //禁止ARR預裝載緩沖器,也可以不用設置

TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2; //選擇定時器模式:TIM脈沖寬度調制模式2

TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //比較輸出使能

//占空比設置方法:

//占空比=(TIM_Pulse+1)/(TIM_Pulse+1)-(TIM_Period+1)=10000/20000=0.5=50%

TIM_OCInitStructure.TIM_Pulse = 10000-1;

TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; //輸出極性:TIM輸出比較極性高

TIM_OC2Init(TIM3, &TIM_OCInitStructure); //根據(jù)TIM_OCInitStruct中指定的參數(shù)初始化外設TIMx

TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Enable); //使能TIMx在CCR2上的預裝載寄存器

//上面兩句中的OC2確定了是channle幾,要是OC3則是channel 3

TIM_CtrlPWMOutputs(TIM3,ENABLE); //設置TIM2的PWM輸出為使能

TIM_ARRPreloadConfig(TIM3, ENABLE); //使能TIMx在ARR上的預裝載寄存器

TIM_Cmd(TIM3, ENABLE); //使能TIMx外設

}

int main(void)

{

GPIO_TimPWM();

TIM3_Configuration();

while(1)

{

} ;

}

利用Keil邏輯分析儀分分析PWM波形圖:經(jīng)過測試可以看出輸出波形精度可靠!

pwm波形圖

感謝閱讀:)

對我文章感興趣的網(wǎng)友,可以關注我。

總結

以上是生活随笔為你收集整理的stm32f4 输出pwm波_stm32的pwm输出代码及注释的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。