标题: 有人配置过STM32的tim4吗?请教一下 [打印本页]

作者: 七九六    时间: 2019-1-18 09:23
标题: 有人配置过STM32的tim4吗?请教一下
tim14配置好了之后
TIM14_PWM_Init(1000-1,84-1);         
TIM_SetCompare1(TIM14,1200);

通过调用改变这个就能改变频率占空比。
看到有大佬在帖子里发:
IM14使用
TIM_SetCompare1(TIM14,625); 但是这个办法对TIM4行不通。

TIM4使用
TIM_OCInitStructure.TIM_Pulse = dutyCycle;


tim4配置方法和tim14不一样,但根据他说的用TIM_OCInitStructure.TIM_Pulse = dutyCycle;配置好了调用到主函数就会报错说没有定义
就没法在主函数里修改数值更改占空比。

在这里求教一下,麻烦有了解的帮忙指点一下。非常感谢。QQ2302947935


作者: 嵌入式学习007    时间: 2019-1-18 13:08
你去搜索正点原子教程,定时器实验内容很全的
作者: xuyaqi    时间: 2019-1-18 15:27
/***********************TIM4初始化PWM相关GPIO*************************/

static void GENERAL_TIM_GPIO_Config(void)
{
  GPIO_InitTypeDef GPIO_InitStructure;                                                        //初始化结构体

  RCC_APB2PeriphClockCmd(GENERAL_TIM4_CH1_GPIO_CLK, ENABLE);//使能GPIOB端口时钟
  GPIO_InitStructure.GPIO_Pin =  GENERAL_TIM4_CH1_PIN;                        //PB6
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;                                    //复用推挽输出
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;                                  //推挽速度50MH
  GPIO_Init(GENERAL_TIM4_CH1_PORT, &GPIO_InitStructure);                //初始化相关GPIO       
}


/**************************TIM2PWM配置********************************/
static void GENERAL_TIM_Mode_Config(void)
{

        TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;                                        //定时器基本配置结构体
        TIM_OCInitTypeDef  TIM_OCInitStructure;                                                        //通道配置结构体       
               
        GENERAL_TIM4_APBxClock_FUN(GENERAL_TIM4_CLK,ENABLE);                        //TIM2 挂载在APB1 32M
       
        // 自动重装载寄存器的值,累计TIM_Period+1个频率后产生一个更新或者中断
       
        TIM_TimeBaseStructure.TIM_Period=GENERAL_TIM4_Period;                        //配置计数720次               
        // 驱动CNT计数器的时钟 = Fck_int/(psc+1)
        TIM_TimeBaseStructure.TIM_Prescaler= GENERAL_TIM4_Prescaler;        //CNT时钟不分频       
        // 时钟分频因子 ,配置死区时间时需要用到
        TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1;                        //时钟不分频       
        // 计数器计数模式,设置为向上计数
        TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;                //向上计数               
        // 重复计数器的值,没用到不用管
        TIM_TimeBaseStructure.TIM_RepetitionCounter=0;                                       
        // 初始化定时器
        TIM_TimeBaseInit(GENERAL_TIM4, &TIM_TimeBaseStructure);                        //初始化定时器配置

        /*--------------------输出比较结构体初始化-------------------*/       

                               
        // 配置为PWM模式1
        TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;                                //PWM模式1
        // 输出使能
        TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;        //使能输出
        // 输出通道电平极性配置       
        TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;                //高电平使能
       
        // 输出比较通道 1
        TIM_OCInitStructure.TIM_Pulse = 0;                                                //初始值为0
        TIM_OC1Init(GENERAL_TIM4, &TIM_OCInitStructure);                                //初始化配置
        TIM_OC1PreloadConfig(GENERAL_TIM4, TIM_OCPreload_Enable);                //使能加载寄存器
       
        TIM_Cmd(GENERAL_TIM4, ENABLE);
}



/*************************TIM4初始化函数****************************************/

void TIM4_PWM_Init(void)
{
        GENERAL_TIM_GPIO_Config();
        GENERAL_TIM_Mode_Config();               
}



作者: houhualong    时间: 2019-1-19 00:15
没有定义,你看一下你的配置外设的头文件里是不是把tim4的宏注释掉了
作者: 七九六    时间: 2019-1-19 11:41
xuyaqi 发表于 2019-1-18 15:27
/***********************TIM4初始化PWM相关GPIO*************************/

static void GENERAL_TIM_G ...

请教一下在哪里修改占空比和频率呢?
作者: 七九六    时间: 2019-1-26 10:59
解决了,谢谢大家
作者: xuyaqi    时间: 2019-1-26 18:21
七九六 发表于 2019-1-19 11:41
请教一下在哪里修改占空比和频率呢?

频率是这个:static void GENERAL_TIM_Mode_Config(void);
脉宽是这个:TIM_SetCompare1(GENERAL_TIM4,36);       
作者: huangzheng321    时间: 2019-1-26 20:54
看看TIM4的时钟有没有配置,还有分频是多少




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1