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);
|