OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4100|回复: 1

STM32F103ret6 time4 CCR1和CCR2无法输出PWM但是CCR3和CCR4可以,怀疑和复用I^2C复用有关请求大神解答,附代码,控制舵机

[复制链接]

1

主题

2

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2016-7-21
在线时间
5 小时
发表于 2016-9-17 19:49:23 | 显示全部楼层 |阅读模式
#include "stm32f10x.h"
//#include "bsp_pwm_output.h"
//#include "bsp_pwm2_output.h"
#include "bsp_pwm4_output.h"
#include "bsp_SysTick.h"

int main(void)
{       
       
//        TIM2_PWM_Init();
       
//        TIM3_PWM_Init();
       
        TIM4_PWM_Init();
       

while(1)
{       
       
       
                TIM4->CCR1=1500;
                        delay_ms(250);
                TIM4->CCR1=500;
                        delay_ms(250);
                TIM4->CCR1=1500;
                        delay_ms(250);
                TIM4->CCR1=2500;
                        delay_ms(250);
        while(1)         
        {}
}
}



/*********************************************END OF FILE**********************/

#include "bsp_pwm4_output.h"

static void TIM4_GPIO_Config(void)
{
  GPIO_InitTypeDef GPIO_InitStructure;

        /* éèÖÃTIM2CLK Îa 72MHZ */
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE);

  /* GPIOA and GPIOB clock enable */
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);

  /*GPIOA Configuration: TIM2 channel 1 and 2 as alternate function push-pull */
  GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_8|GPIO_Pin_9;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;                  
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init(GPIOB, &GPIO_InitStructure);

}


static void TIM4_Mode_Config(void)
{
        TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
        TIM_OCInitTypeDef  TIM_OCInitStructure;

        u16 CCR1_Val=1500;
        u16 CCR2_Val=1500;
        u16 CCR3_Val=1500;
        u16 CCR4_Val=1500;  
  /* Time base configuration */                 
  TIM_TimeBaseStructure.TIM_Period =14999;      
  TIM_TimeBaseStructure.TIM_Prescaler = 71;          
  TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1 ;       
  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
  TIM_TimeBaseInit(TIM4, &TIM_TimeBaseStructure);

  /* PWM1 Mode configuration: Channel1 */
  TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;            
  TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;       
  TIM_OCInitStructure.TIM_Pulse = CCR1_Val;          
  TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;  
  TIM_OC1Init(TIM4, &TIM_OCInitStructure);       
  TIM_OC1PreloadConfig(TIM4, TIM_OCPreload_Enable);
        /* PWM1 Mode configuration: Channel2 */
  TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
  TIM_OCInitStructure.TIM_Pulse = CCR2_Val;         
  TIM_OC2Init(TIM4, &TIM_OCInitStructure);          
  TIM_OC2PreloadConfig(TIM4, TIM_OCPreload_Enable);

  /* PWM1 Mode configuration: Channel3 */
  TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
  TIM_OCInitStructure.TIM_Pulse = CCR3_Val;       
  TIM_OC3Init(TIM4, &TIM_OCInitStructure);         
  TIM_OC3PreloadConfig(TIM4, TIM_OCPreload_Enable);

  /* PWM1 Mode configuration: Channel4 */
  TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
  TIM_OCInitStructure.TIM_Pulse = CCR4_Val;       
  TIM_OC4Init(TIM4, &TIM_OCInitStructure);       
  TIM_OC4PreloadConfig(TIM4, TIM_OCPreload_Enable);
  /* TIM3 enable counter */
  TIM_Cmd(TIM4, ENABLE);               
}


extern void TIM4_PWM_Init(void)
{
        TIM4_GPIO_Config();
        TIM4_Mode_Config();       
}

/*********************************************END OF FILE**********************/







正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

2

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2016-7-21
在线时间
5 小时
 楼主| 发表于 2016-9-17 19:50:26 | 显示全部楼层
一定需要用到这两个通道  谢谢了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-12 15:53

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表