发布网友 发布时间:2022-04-23 08:49
共1个回答
热心网友 时间:2022-06-18 14:31
最好用库函数的形式来写程序,易懂,好移植!
TIM_OCInitTypeDef TIM_OCInitStructure;//定义结构体
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;//定义结构体
/* 打开定时器3外设时钟 */
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3 , ENABLE);
/* 定时器3基本定时器设置 */
/* 定时器从0计数到255为一个定时周期 */
TIM_TimeBaseStructure.TIM_Period = 255;
/* 设置预分频 2000 分频 */
TIM_TimeBaseStructure.TIM_Prescaler = 1999;
/* 设置时钟分频系数,此处未分频 */
TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;
/* 向上计数模式 */
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
/* 基本定时器初始化 */
TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);
/* 定时器3PWM设置 PWM1 模式 */
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
/* 使能输出 */
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
/* 设置初始 PWM 脉冲宽度为 0 */
TIM_OCInitStructure.TIM_Pulse = 0;
/* 当定时器计数值小于 TIM_Pulse 时为低电平 */
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low;
/* TIM3的CH1初始化 */
TIM_OC3Init(TIM3, &TIM_OCInitStructure);
/* 使能的预装载寄存器 */
TIM_OC3PreloadConfig(TIM3, TIM_OCPreload_Enable);
/* 使能 TIM3 重载寄存器 ARR */
TIM_ARRPreloadConfig(TIM3, ENABLE);
/* 使能定时器3 */
TIM_Cmd(TIM3, ENABLE);
/* 使能定时器3的 update中断 */
TIM_ITConfig(TIM3,TIM_IT_Update, ENABLE);