4、初始化结构体参数并使能
//初始化GPIOA
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_7;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
//初始化结构体A
GPIO_Init(GPIOA, &GPIO_InitStructure);
//初始化GPIOB
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9;
//初始化结构体B,相同参数可复用
GPIO_Init(GPIOB, &GPIO_InitStructure);
//当定时器从0计数到16800,即为16800次,为一个定时周期,定时周期到了之后会产生一个更新或中断,可通过更新中断TIM_IT_Update来捕获
TIM_TimeBaseStructure.TIM_Period = 16800-1;
// 通用控制定时器时钟源TIMxCLK = HCLK/2=84MHz
// 设定定时器频率为=TIMxCLK/(TIM_Prescaler+1)=100KHz
TIM_TimeBaseStructure.TIM_Prescaler = 84-1;
// 采样时钟分频,分频含义为几个周期采集一次数据,此处不分频
TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1;
// 计数方式,向上计数
TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;
// 初始化定时器TIM3
TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);
// 初始化定时器TIM4
TIM_TimeBaseInit(TIM4, &TIM_TimeBaseStructure);
//PWM模式配置
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;//配置为PWM模式1
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
TIM_OCInitStructure.TIM_Pulse = 1277-1;//因遥控器输出占空比为5.5-9.7,此处以输出7.6占空比为例
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; //当定时器计数值小于1277时为高电平
//使能定时器3通道,相同参数可复用,若要输出不同占空比或频率的PWM波可以调节参数后再初始化
TIM_OC1Init(TIM3, &TIM_OCInitStructure); //使能通道1
TIM_OC2Init(TIM3, &TIM_OCInitStructure); //使能通道2
TIM_OC3Init(TIM3, &TIM_OCInitStructure); //使能通道3
TIM_OC4Init(TIM3, &TIM_OCInitStructure); //使能通道4
//使能定时器4通道
TIM_OC1Init(TIM4, &TIM_OCInitStructure); //使能通道1
TIM_OC2Init(TIM4, &TIM_OCInitStructure); //使能通道2
TIM_OC3Init(TIM4, &TIM_OCInitStructure); //使能通道3
TIM_OC4Init(TIM4, &TIM_OCInitStructure); //使能通道4
//重载的目的是在定时器的预加载寄存器中存入要修改的TIM_SetCompareX值,防止修改值立即对当前周期生效影响电平,使得参数可以在上一个周期执行完之后使能
//重载定时器3所有通道
//通道1重载
TIM_OC1PreloadConfig(TIM3, TIM_OCPreload_Enable);
//通道2重载
TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Enable);
//通道3重载
TIM_OC3PreloadConfig(TIM3, TIM_OCPreload_Enable);
//通道4重载
TIM_OC4PreloadConfig(TIM3, TIM_OCPreload_Enable);
//重载定时器4所有通道
//通道1重载
TIM_OC1PreloadConfig(TIM4, TIM_OCPreload_Enable);
//通道2重载
TIM_OC2PreloadConfig(TIM4, TIM_OCPreload_Enable);
//通道3重载
TIM_OC3PreloadConfig(TIM4, TIM_OCPreload_Enable);
//通道4重载
TIM_OC4PreloadConfig(TIM4, TIM_OCPreload_Enable);
|