[STM32F1] 求解,stm32f107的高级定时器TIM1无法输出PWM波。

[复制链接]
2067|8
 楼主| cry1109 发表于 2019-9-12 16:34 | 显示全部楼层 |阅读模式
本帖最后由 cry1109 于 2019-9-12 16:36 编辑
  1. void TIM1_CH1_PWM_Init(u16 per,u16 psc)
  2. {
  3.         TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;
  4.         TIM_OCInitTypeDef TIM_OCInitStructure;
  5.         GPIO_InitTypeDef GPIO_InitStructure;
  6.        
  7.         /* 开启时钟 */
  8.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
  9.         RCC_APB1PeriphClockCmd(RCC_APB2Periph_TIM1,ENABLE);
  10.         //RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
  11.        
  12.         /*  配置GPIO的模式和IO口 */
  13.         GPIO_InitStructure.GPIO_Pin=GPIO_Pin_11;
  14.         GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
  15.         GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;//推挽输出
  16.         GPIO_Init(GPIOA,&GPIO_InitStructure);
  17.         //GPIO_PinRemapConfig(GPIO_FullRemap_TIM1,ENABLE);//改变指定管脚的映射       

  18.         TIM_TimeBaseInitStructure.TIM_Period=per;   //自动装载值
  19.         TIM_TimeBaseInitStructure.TIM_Prescaler=psc; //分频系数
  20.         TIM_TimeBaseInitStructure.TIM_ClockDivision=TIM_CKD_DIV1;
  21.         TIM_TimeBaseInitStructure.TIM_CounterMode=TIM_CounterMode_Up; //设置向上计数模式
  22.         TIM_TimeBaseInitStructure.TIM_RepetitionCounter = 0;
  23.         TIM_TimeBaseInit(TIM1,&TIM_TimeBaseInitStructure);       
  24.        
  25.         TIM_OCInitStructure.TIM_OCMode=TIM_OCMode_PWM1;
  26.         TIM_OCInitStructure.TIM_Pulse = 1000;
  27.         TIM_OCInitStructure.TIM_OCPolarity=TIM_OCPolarity_Low;
  28.         TIM_OCInitStructure.TIM_OutputState=TIM_OutputState_Enable;
  29.         TIM_OC1Init(TIM1,&TIM_OCInitStructure); //输出比较通道1初始化

  30.         TIM_OC1PreloadConfig(TIM1,TIM_OCPreload_Enable); //使能TIMx在 CCR1 上的预装载寄存器
  31.         TIM_ARRPreloadConfig(TIM1,ENABLE);//使能预装载寄存器
  32.        
  33.         TIM_Cmd(TIM1,ENABLE); //使能定时器
  34.        
  35.         TIM_CtrlPWMOutputs(TIM1, ENABLE);  
  36. }

 楼主| cry1109 发表于 2019-9-12 16:38 | 显示全部楼层
和通用定时器TIM3配置OC步骤差不多,TIM3能够输出PWM波,可是TIM1无法输出,哪里有问题吗?
  1. void TIM3_CH1_PWM_Init(u16 per,u16 psc)
  2. {
  3.         TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;
  4.         TIM_OCInitTypeDef TIM_OCInitStructure;
  5.         GPIO_InitTypeDef GPIO_InitStructure;
  6.        
  7.         /* 开启时钟 */
  8.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
  9.         RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);
  10.        
  11.         /*  配置GPIO的模式和IO口 */
  12.         GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6;
  13.         GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
  14.         GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;                //复用推挽输出
  15.         GPIO_Init(GPIOA,&GPIO_InitStructure);

  16.        
  17.         TIM_TimeBaseInitStructure.TIM_Period=per;                   //自动装载值
  18.         TIM_TimeBaseInitStructure.TIM_Prescaler=psc;          //分频系数
  19.         TIM_TimeBaseInitStructure.TIM_ClockDivision=TIM_CKD_DIV1;
  20.         TIM_TimeBaseInitStructure.TIM_CounterMode=TIM_CounterMode_Up; //设置向上计数模式
  21.         TIM_TimeBaseInit(TIM3,&TIM_TimeBaseInitStructure);       
  22.        
  23.         TIM_OCInitStructure.TIM_OCMode=TIM_OCMode_PWM1;
  24.         TIM_OCInitStructure.TIM_OCPolarity=TIM_OCPolarity_Low;
  25.         TIM_OCInitStructure.TIM_OutputState=TIM_OutputState_Enable;
  26.         TIM_OC1Init(TIM3,&TIM_OCInitStructure);         //输出比较通道1初始化
  27.        
  28.         TIM_OC1PreloadConfig(TIM3,TIM_OCPreload_Enable); //使能TIMx在 CCR1 上的预装载寄存器
  29.         TIM_ARRPreloadConfig(TIM3,ENABLE);                //使能预装载寄存器
  30.        
  31.         TIM_Cmd(TIM3,ENABLE); //使能定时器
  32. }
 楼主| cry1109 发表于 2019-9-16 17:52 | 显示全部楼层
问题解决了,自己偷懒造成的!!!配置高级定时器1时直接复制定时器3的配置函数,然后随便修改一下,结果RCC_APB1PeriphClockCmd(RCC_APB2Periph_TIM1,ENABLE)参数使用错误,APB1初始化函数参数却是RCC_APB2Periph_TIM1???真是活该啊,哈哈哈。
wsmysyn 发表于 2019-9-16 17:56 | 显示全部楼层
一般很奇怪的问题,可能都是由于一个很简单的错误造成的。。

heimaojingzhang 发表于 2019-10-12 14:26 | 显示全部楼层
一点波形都没有吗
keaibukelian 发表于 2019-10-12 14:28 | 显示全部楼层
帮楼主顶一下
labasi 发表于 2019-10-12 14:33 | 显示全部楼层
帮楼主顶一下
zljiu 发表于 2019-10-13 11:40 | 显示全部楼层
我也涨知识了
jasonell 发表于 2019-10-27 10:44 | 显示全部楼层
timer1挂在APB1下的,跟其他的不同。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

40

主题

172

帖子

4

粉丝
快速回复 在线客服 返回列表 返回顶部