您的位置 首页 报告

STM32之PWM最终版-注释明晰一看就懂

includestm32f10xhvoidGPIO_TimPWM(void){GPIO_InitTypeDefGPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC

#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
//假设我要发生50Hz占空比为50%的PWM波,便利操控舵机
//设置办法:
//体系默许时钟为72MHz,预分频71+1次,得到TIM3计数时钟为1MHz
//计数长度为19999+1=20000,可得PWM频率为1M/20000=50Hz
//详细设置可参阅上面的设置办法,简单明了!
TIM_TimeBaseStructure.TIM_Prescaler =72-1;//网上大都设置有误
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向上计数模
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); //依据TIM_OCInitStruct中指定的参数初始化外设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波形图:通过测验能够看出输出波形精度牢靠!


声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/ceping/baogao/258332.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部