TIM2_CH3 CH4不能输出PWM的问题
芯片STM32F103ZET6 配置如下,感觉没啥问题啊,但是怎么弄就是不能输出PWM波,求教?? 这样查不出来问题的,找到手册,看寄存器一个一个对照, 看引脚复用,时钟,映射等,都设置是否正确? yuyu87 发表于 2022-6-27 20:56看引脚复用,时钟,映射等,都设置是否正确?
(引用自3楼)
之前正点原子的历程,映射到PB5 用的是TIM3然后我想用TIM2的CH3和CH4就对应的改了一下,然后就输出不了PWM了,只能看寄存器操作了 本帖最后由 初音之恋 于 2022-6-28 09:32 编辑
RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM8, ENABLE);
/* Time base configuration */
TIM_TimeBaseStructure.TIM_Period =40000; //period=1/24M*960=25KHz
TIM_TimeBaseStructure.TIM_Prescaler = 3; //设置预分频:预分频=2,即为72/3=24MHz
TIM_TimeBaseStructure.TIM_ClockDivision = 0; //设置时钟分频系数:不分频
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //向上计数溢出模式
TIM_TimeBaseStructure.TIM_RepetitionCounter=0;
TIM_TimeBaseInit(TIM8, &TIM_TimeBaseStructure);
/* PWM1 Mode configuration: Channel1 */
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; //配置为PWM模式1
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
TIM_OCInitStructure.TIM_OutputNState = TIM_OutputState_Disable;
TIM_OCInitStructure.TIM_OCPolarity =TIM_OCPolarity_Low; //当定时器计数值小于CCR1时为高电平
TIM_OCInitStructure.TIM_OCNPolarity= TIM_OCPolarity_Low;
TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Set;
TIM_OCInitStructure.TIM_OCNIdleState = TIM_OCIdleState_Reset;
TIM_OCInitStructure.TIM_Pulse = 0; //设置跳变值,当计数器计数到这个值时,电平发生跳变
TIM_OC2Init(TIM8, &TIM_OCInitStructure); //使能通道1
TIM_OC2PreloadConfig(TIM8, TIM_OCPreload_Enable);
TIM_OCInitStructure.TIM_Pulse = 0; //设置跳变值,当计数器计数到这个值时,电平发生跳变
TIM_OC3Init(TIM8, &TIM_OCInitStructure); //使能通道1
TIM_OC3PreloadConfig(TIM8, TIM_OCPreload_Enable);
TIM_OCInitStructure.TIM_Pulse = 0; //设置跳变值,当计数器计数到这个值时,电平发生跳变
TIM_OC4Init(TIM8, &TIM_OCInitStructure); //使能通道1
TIM_OC4PreloadConfig(TIM8, TIM_OCPreload_Enable);
TIM_ARRPreloadConfig(TIM8, ENABLE); //使能TIM3重载寄存器ARR
TIM_CtrlPWMOutputs(TIM8, ENABLE);
/* TIM3 enable counter */
TIM_Cmd(TIM8, ENABLE);
初始化的参数是不是太少了,临时变量的结构体必须所有项都初始化,否则数据都是随机的,就会变成一会儿能用一会儿不能用 TIM_CtrlPWMOutputs(TIM2, ENABLE);这个没开吧
页:
[1]