找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3059|回复: 7
收起左侧

有人配置过STM32的tim4吗?请教一下

[复制链接]
ID:94031 发表于 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();               
}


回复

使用道具 举报

ID:94031 发表于 2019-1-26 18:21 | 显示全部楼层
七九六 发表于 2019-1-19 11:41
请教一下在哪里修改占空比和频率呢?

频率是这个:static void GENERAL_TIM_Mode_Config(void);
脉宽是这个:TIM_SetCompare1(GENERAL_TIM4,36);       
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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